Estou construindo uma App que recebe a localização do usuário, porém preciso receber a localização mesmo quando essa é fechada, criei um Service mesmo assim quando a app é fechada perco a localização.
public class GPSService extends Service {
private LocationListener locationListener;
private LocationManager locationManager;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
iniciaNavegacao();
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
if (locationManager != null) {
locationManager.removeUpdates(locationListener);
}
}
@SuppressLint("MissingPermission")
public void iniciaNavegacao() {
locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
Log.i("teste de localizacao", "Localizacao: " + location.toString());
float velocidade = location.getSpeed();
Double velocidadeEmKm = velocidade * 3.6;
Intent intent = new Intent("atualizacao_localizacao");
intent.putExtra("latitude", location.getLatitude());
intent.putExtra("longitude", location.getLongitude());
intent.putExtra("velocidade", velocidadeEmKm);
sendBroadcast(intent);
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
};
locationManager = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
}
}