Checking if internet is available, before sending location to telegram.
This commit is contained in:
parent
6cefb98c9b
commit
c2787d179a
|
|
@ -3,6 +3,8 @@
|
|||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
|
||||
|
|
|
|||
|
|
@ -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<LocationEntity> 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(),
|
||||
|
|
|
|||
Loading…
Reference in a new issue