Для получения gps координат я решил создать сервис, который по идее должен работать в фоне, при выключенном экране или при свернутом приложении. Вот сервис:
Вот
public class GpsService extends Service {
private LocationListener listener;
private LocationManager locationManager;
private int counter = 0;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
listener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
Intent i = new Intent("location_update");
i.putExtra("speed", String.valueOf(location.getSpeed()));
i.putExtra("counter", String.valueOf(counter));
sendBroadcast(i);
Toast.makeText(getApplicationContext(), String.valueOf(counter), Toast.LENGTH_SHORT).show();
counter++;
}
@Override
public void onStatusChanged(String s, int i, Bundle bundle) {
}
@Override
public void onProviderEnabled(String s) {
}
@Override
public void onProviderDisabled(String s) {
}
};
locationManager = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE);
//noinspection MissingPermission
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000,0.1f, listener);
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
if(locationManager != null){
//noinspection MissingPermission
locationManager.removeUpdates(listener);
}
}
}
Вот что добавлено в манифест:
Вот
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>
<service
android:name=".GpsService"
android:enabled="true"
android:foregroundServiceType="location"
android:exported="true"></service>
Но если закрыть приложение или экран, то не будет увеличиваться счетчик и пропадут сообщения Toast.
При попытке "в лоб" запустить foregroundService, программа вылетала при повторном открытии.
Что я делаю не так?
Но если свернуть программу или за