Verwenden von Google Play Services LocationClient im Hintergrunddienst

Meine app ist entworfen, um track Position des Benutzers in regelmäßigen Abständen und senden Sie es an server, vor Kurzem habe ich meinen code mit Google play services Location API.

Habe ich die locationclient und mit dem service in onStartCommand

public int onStartCommand(Intent intent, int flags, int startId) {
    setUpLocationClientIfNeeded();
    if(!mLocationClient.isConnected() || !mLocationClient.isConnecting())
    mLocationClient.connect();
    return START_STICKY;

}

und in der onConnected-Methode, sende ich eine location-Anfrage,

@Override
public void onConnected(Bundle arg0) {
    System.out.println("Connected ...");
    mLocationClient.requestLocationUpdates(REQUEST, this);

}

Dem REQUEST-Objekt ist,

 private static final LocationRequest REQUEST = LocationRequest.create()
      .setInterval(5*60*1000)      //5 minutes
      .setFastestInterval(3*60*1000) //3 minutes
      .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

Nun das Problem ist,

  1. die onLocationChanged-Methode ist nicht immer genannt, bei dem gegebenen Intervall ich.e 5 Minuten und die Schnellste Intervall 3 Minuten. Aus dem log konnte ich sehen, die immer aufgerufen, nur zweimal oder dreimal nach, dass seine nicht immer genannt ( die ich geprüft nach 1 Stunde).

Was ist das Problem mit meinem oben genannten code?. ( Ich konnte nicht sehen, keine log für 'getrennt')

  1. Um dieses Problem zu lösen, habe ich versucht zu verwenden alarmmanager zu nennen, die Aufgabe, in regelmäßigen Abständen. Nun, wie man eine einzelne location update durch Locationclient von einem broadcastreceiver. (locationclient.getLastlocation() nur die Letzte gespeicherte Position, aber es ist nicht das anfordern einer neuen Lage),

InformationsquelleAutor der Frage ThiyagaB | 2013-06-03

Schreibe einen Kommentar