diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 91940b8..8674d39 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,6 +3,8 @@
xmlns:tools="http://schemas.android.com/tools">
+
+
diff --git a/app/src/main/java/com/proculite/logmylocation/LocationLoggingService.java b/app/src/main/java/com/proculite/logmylocation/LocationLoggingService.java
index f90a526..548c6f2 100644
--- a/app/src/main/java/com/proculite/logmylocation/LocationLoggingService.java
+++ b/app/src/main/java/com/proculite/logmylocation/LocationLoggingService.java
@@ -9,7 +9,10 @@ import android.content.pm.ServiceInfo;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
-import android.location.LocationProvider;
+import android.net.ConnectivityManager;
+import android.net.Network;
+import android.net.NetworkCapabilities;
+import android.net.NetworkRequest;
import android.os.Build;
import android.os.IBinder;
import android.util.Log;
@@ -17,11 +20,9 @@ import android.util.Log;
import androidx.annotation.NonNull;
import androidx.core.app.NotificationCompat;
import androidx.core.app.ServiceCompat;
-import androidx.core.location.LocationManagerCompat;
import androidx.room.Room;
import com.pengrad.telegrambot.TelegramBot;
-import com.pengrad.telegrambot.model.Chat;
import com.pengrad.telegrambot.request.SendLocation;
import java.time.Duration;
@@ -35,6 +36,13 @@ public class LocationLoggingService extends Service implements LocationListener
Duration durationBetweenTelegramUpdates = Duration.ofMinutes(6);
long metersDistanceBetweenTelegramUpdates = 1000;
+ private boolean internetAvailable = false;
+ NetworkRequest networkRequest = new NetworkRequest.Builder()
+ .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
+ .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
+ .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
+ .build();
+
public LocationLoggingService() {
}
@@ -70,10 +78,31 @@ public class LocationLoggingService extends Service implements LocationListener
locationDao = database.locationDao();
subscribeToLocationUpdates(this);
+ subscribeToNetworkUpdates();
return super.onStartCommand(intent, flags, startId);
}
+ public void subscribeToNetworkUpdates(){
+ ConnectivityManager connectivityManager =
+ (ConnectivityManager) getSystemService(ConnectivityManager.class);
+ connectivityManager.requestNetwork(networkRequest, new ConnectivityManager.NetworkCallback(){
+ @Override
+ public void onLost(@NonNull Network network) {
+ super.onLost(network);
+ Log.i(TAG, "Internet connection lost.");
+ internetAvailable = false;
+ }
+
+ @Override
+ public void onAvailable(@NonNull Network network) {
+ super.onAvailable(network);
+ Log.i(TAG, "Internet connection obtained.");
+ internetAvailable = true;
+ }
+ });
+ }
+
public List allLocations(){
return locationDao.getAll();
}
@@ -135,6 +164,12 @@ public class LocationLoggingService extends Service implements LocationListener
return;
}
+ if(!internetAvailable)
+ {
+ Log.i(TAG, "Internet is not available.");
+ return;
+ }
+
lastLocation = newLocation;
sendLocationToTelegram(lastLocation);
}
@@ -144,6 +179,7 @@ public class LocationLoggingService extends Service implements LocationListener
String telegramChat = getResources().getString(R.string.telegramChat);
TelegramBot bot = new TelegramBot(botToken);
+ Log.i(TAG, "Sending to telegram.");
new Thread(()->{
bot.execute(new SendLocation(telegramChat,
Double.valueOf(location.getLatitude()).floatValue(),