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(),