Mon application est conçue pour suivre périodiquement l’emplacement de l’utilisateur et l’envoyer au serveur. Récemment, j’ai modifié mon code avec l’API de localisation des services Google Play.
J’ai créé le client de localisation et 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’object 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’append 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; }