À l'aide de Google Play Services LocationClient en service d'arrière-plan

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,

  1. la 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)

  1. 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)
  • J'ai un problème très similaire. J'ai fait un rapide et sale de service qui est exécutée périodiquement avec un AlarmManager et j'appelle getLastLocation à chaque fois. L'appel apparemment retourne un emplacement, mais cet emplacement n'est jamais mis à jour. J'ai trouvé que l'ouverture de l'application Google Maps (fonctionne probablement avec d'autres emplacement des applications sensibles) rend soudainement les emplacements reçu par mon service de mise à jour ok. Toute idée de ce qui pourrait se passer?
  • getlastlocation utilise toujours passive fournisseur au lieu de GPS ou fournisseur de réseau qui signifie que lorsque toute autre application(comme Google maps) obtient la récente emplacement de Notre application va utiliser la même passivement
  • Vous voulez seulement de suivre la localisation de l'utilisateur lorsque votre application est en cours d'exécution ou aussi quand il est en arrière-plan ?
  • Pour obtenir un seul frais emplacement de mise à jour, vous créez une demande de localisation avec les setNumUpdates à 1, comme par: developer.android.com/reference/com/google/android/gms/location/... mais si vous pour une raison quelconque vous n'obtenez pas les "rappels" à tous les thats probablement pas très utile.
  • Avez-vous vérifié si votre service est encore en vie et n'est pas détruit?
InformationsquelleAutor ThiyagaB | 2013-06-03