Mon app est conçu pour le suivi de l'emplacement de l'utilisateur périodiquement et de l'envoyer au serveur, j'ai Récemment changé mon code avec Google play services de l'Emplacement de l'API.
J'ai créé le locationclient et connecté au service en onStartCommand
public int onStartCommand(Intent intent, int flags, int startId) {
setUpLocationClientIfNeeded();
if(!mLocationClient.isConnected() || !mLocationClient.isConnecting())
mLocationClient.connect();
return START_STICKY;
}
et dans onConnected la méthode, j'ai envoyer une demande de localisation,
@Override
public void onConnected(Bundle arg0) {
System.out.println("Connected ...");
mLocationClient.requestLocationUpdates(REQUEST, this);
}
L'objet de la REQUÊTE 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 la question est,
- le onLocationChanged méthode n'est pas appelée à l'intervalle donné que je.e à 5 minutes ou la plus rapide de l'intervalle de 3 minutes. Dans le journal j'ai pu voir, son être appelé que deux fois ou trois fois, après que ses pas appelé du tout ( j'ai vérifié après 1 heure).
Quel est le problème avec mon code ci-dessus?. ( Je ne pourrais pas voir n'importe quel journal pour "déconnecté" aussi)
- Pour résoudre ce problème, j'ai essayé d'utiliser alarmmanager à l'appel de la tâche périodique. Maintenant, comment obtenir un seul emplacement de mise à jour par le biais de Locationclient à partir d'un broadcastreceiver. (locationclient.getLastlocation() ne retournera la dernière position mémorisée, mais il ne demande pas à un nouvel emplacement)