Mon application est conçue pour suivre périodiquement l'emplacement de l'utilisateur et l'envoyer au serveur.J'ai récemment changé mon code avec l'API de localisation des services Google play.
J'ai créé le client de localisation et je me suis connecté au service dans onStartCommand
public int onStartCommand(Intent intent, int flags, int startId) {
setUpLocationClientIfNeeded();
if(!mLocationClient.isConnected() || !mLocationClient.isConnecting())
mLocationClient.connect();
return START_STICKY;
}
et dans la méthode onConnected, j'envoie une demande de localisation,
@Override
public void onConnected(Bundle arg0) {
System.out.println("Connected ...");
mLocationClient.requestLocationUpdates(REQUEST, this);
}
L'objet REQUEST est,
private static final LocationRequest REQUEST = LocationRequest.create()
.setInterval(5*60*1000) // 5 minutes
.setFastestInterval(3*60*1000) // 3 minutes
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
Maintenant, le problème est,
Quel est le problème avec mon code ci-dessus?. (Je ne pouvais pas voir de journal pour "déconnecté" aussi)
Code source complet pour un service d'arrière-plan disponible ici:
https://Gist.github.com/blackcj/20efe2ac885c7297a676
Essayez d'ajouter le super appel à votre onStartCommand.
/**
* Keeps the service running even after the app is closed.
*
*/
public int onStartCommand (Intent intent, int flags, int startId)
{
super.onStartCommand(intent, flags, startId);
setUpLocationClientIfNeeded();
if(!mLocationClient.isConnected() || !mLocationClient.isConnecting())
{
mLocationClient.connect();
}
return START_STICKY;
}