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">
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<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_COARSE_LOCATION" />
|
||||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||||
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_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.Location;
|
||||||
import android.location.LocationListener;
|
import android.location.LocationListener;
|
||||||
import android.location.LocationManager;
|
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.Build;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
@ -17,11 +20,9 @@ import android.util.Log;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.core.app.NotificationCompat;
|
import androidx.core.app.NotificationCompat;
|
||||||
import androidx.core.app.ServiceCompat;
|
import androidx.core.app.ServiceCompat;
|
||||||
import androidx.core.location.LocationManagerCompat;
|
|
||||||
import androidx.room.Room;
|
import androidx.room.Room;
|
||||||
|
|
||||||
import com.pengrad.telegrambot.TelegramBot;
|
import com.pengrad.telegrambot.TelegramBot;
|
||||||
import com.pengrad.telegrambot.model.Chat;
|
|
||||||
import com.pengrad.telegrambot.request.SendLocation;
|
import com.pengrad.telegrambot.request.SendLocation;
|
||||||
|
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
|
|
@ -35,6 +36,13 @@ public class LocationLoggingService extends Service implements LocationListener
|
||||||
Duration durationBetweenTelegramUpdates = Duration.ofMinutes(6);
|
Duration durationBetweenTelegramUpdates = Duration.ofMinutes(6);
|
||||||
long metersDistanceBetweenTelegramUpdates = 1000;
|
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() {
|
public LocationLoggingService() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -70,10 +78,31 @@ public class LocationLoggingService extends Service implements LocationListener
|
||||||
locationDao = database.locationDao();
|
locationDao = database.locationDao();
|
||||||
|
|
||||||
subscribeToLocationUpdates(this);
|
subscribeToLocationUpdates(this);
|
||||||
|
subscribeToNetworkUpdates();
|
||||||
|
|
||||||
return super.onStartCommand(intent, flags, startId);
|
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(){
|
public List<LocationEntity> allLocations(){
|
||||||
return locationDao.getAll();
|
return locationDao.getAll();
|
||||||
}
|
}
|
||||||
|
|
@ -135,6 +164,12 @@ public class LocationLoggingService extends Service implements LocationListener
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!internetAvailable)
|
||||||
|
{
|
||||||
|
Log.i(TAG, "Internet is not available.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
lastLocation = newLocation;
|
lastLocation = newLocation;
|
||||||
sendLocationToTelegram(lastLocation);
|
sendLocationToTelegram(lastLocation);
|
||||||
}
|
}
|
||||||
|
|
@ -144,6 +179,7 @@ public class LocationLoggingService extends Service implements LocationListener
|
||||||
String telegramChat = getResources().getString(R.string.telegramChat);
|
String telegramChat = getResources().getString(R.string.telegramChat);
|
||||||
TelegramBot bot = new TelegramBot(botToken);
|
TelegramBot bot = new TelegramBot(botToken);
|
||||||
|
|
||||||
|
Log.i(TAG, "Sending to telegram.");
|
||||||
new Thread(()->{
|
new Thread(()->{
|
||||||
bot.execute(new SendLocation(telegramChat,
|
bot.execute(new SendLocation(telegramChat,
|
||||||
Double.valueOf(location.getLatitude()).floatValue(),
|
Double.valueOf(location.getLatitude()).floatValue(),
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue