Olá Felismario!
Capturar as coordenadas geográficas do usuário com o aplicativo rodando em segundo plano pode ser um desafio, mas é possível fazer isso utilizando o GPS. No entanto, é importante ressaltar que o GPS pode consumir bastante bateria, então é necessário ter cuidado ao implementar essa funcionalidade.
Uma maneira de deixar o GPS funcionando em segundo plano é utilizando um serviço em conjunto com a classe LocationManager. O serviço será responsável por manter o GPS ativo mesmo quando o aplicativo estiver em segundo plano.
Você pode implementar o serviço da seguinte maneira em Java:
public class MyLocationService extends Service implements LocationListener {
private LocationManager locationManager;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
return START_STICKY;
}
@Override
public void onLocationChanged(Location location) {
// Aqui você pode obter as coordenadas geográficas atualizadas
double latitude = location.getLatitude();
double longitude = location.getLongitude();
// Faça o que precisa com as coordenadas
}
@Override
public void onDestroy() {
super.onDestroy();
locationManager.removeUpdates(this);
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
Lembre-se de declarar o serviço no arquivo AndroidManifest.xml:
<service android:name=".MyLocationService" />
Você também pode estudar um pouco essa página da Documentação do Android sobre Acessar a localização em segundo plano
Dessa forma, o serviço será iniciado quando o aplicativo for aberto e continuará rodando em segundo plano mesmo quando o aplicativo estiver minimizado ou fechado.
Qualquer dúvida, estarei à disposição :)