2013-06-11 7 views

Antwort

17

Geofences werden beim Neustart nicht beibehalten. Ich habe getestet und Sie können die Probe here finden.

Sie müssen für BOOT_COMPLETED Aktion hören und Geofences erneut hinzufügen.

Hinweis: Wenn Ihre Anwendung auf externe Speicher (SD-Karte) installiert haben, werden Sie nie Stiefel erhalten die komplette Aktion. Sie müssen also android:installLocation="internalOnly" in der manifest tag angeben. Dies ist, weil Android-Gerät BOOT_COMPLETED Aktion broadcast vor dem Einrichten des externen Speichers.

+0

Hallo, in diesem Tutorial http://developer.android.com/training/location/geofencing.html verstehe ich wirklich nicht die Verwendung von 'SharedPreferences', weil sie nie in Bezug auf den Zugriff auf Daten verwendet werden. Weißt du, warum Presistent Storage verwendet wird? –

+1

Wann auch immer Sie von Geofence ausgelöst werden, erhalten Sie ID dieses bestimmten Geofence. Aber in Echtzeit haben wir viele Informationen statt nur eine ID. SharedPreferences ist wie ein Speicher, um Informationen wie id, messages, lat, lng und andere Werte zu speichern. – Sundeep1501

+0

Dank Sundeep ist das logisch. Ich speichere Geofence-Daten bereits in der Datenbank. Ich war nur verwirrt und vermutete, dass GeoFence Api die Daten verwendet, die in den 'SharedPreferences' gespeichert wurden. –

-1

gefunden. Welche Daten möchten Sie beibehalten? Ist es die Geofence-Region in Ihrem Gerät oder die Geofence-Region, die von der Google Play-Dienststandort-API gespeichert wird?

Ich glaube, das Gerät muss eine Region (definiert durch seine Breite, Länge und Radius) zu Google Play Service (über LocationClient) registrieren. Sie müssen auch die Ablaufzeit angeben, den Übergangstyp, über den Sie benachrichtigt werden möchten, und die Absicht, von der Sie benachrichtigt werden.

Diese Region wird (remote) nicht in Ihrer App gespeichert. Wenn der Google Play-Dienst die Ablaufzeit überschritten hat, wird er automatisch entfernt. Sie können es auch als NEVER_EXPIRE festlegen. Wenn die Region noch nicht abgelaufen ist, benachrichtigt der Google Play-Dienst Ihre App (über Absichten, die Sie beim Aufruf von addGeofences senden).

Die Quelle der Region (lat, long, radius) hängt von Ihrer Implementierung ab.

+0

danke, hast du eine Quelle dafür? – ligi

+0

Sehen Sie sich diese Dokumentationen an: http://developer.android.com/reference/com/google/android/gms/location/Geofence.Builder.html und [http://developer.android.com/reference/com/google /android/gms/location/LocationClient.html#addGeofences(java.util.List, android.app.PendingIntent, com.google.android.gms.location.LocationClient.OnAddGeofencesResultListener)] – ogramus

+0

Ich habe gerade einen anderen Blick auf die GeofencingDetection-Beispiel-App geworfen. – ogramus

4

Ich habe keine Dokumentation gefunden, die dies bestätigt, aber meine eigenen Experimente haben gezeigt, dass sie nicht über Neustarts hinweg bestehen bleiben.

Mein Setup war wie folgt:

  • Run Anwendung
  • Anwendung verschiedene geofences beim ersten Start einrichtet nur als NEVER_EXPIRE
  • Anwendung beenden
  • Verwenden Telefon in Regionen mit Zäunen markiert
  • Bestätigen, dass Zäune ausstehende Absichten auslösen, die an IntentService gesendet werden
  • Verlassen der Region
  • Reboot Telefon
  • erneut eingeben Region
  • Absicht Schwebende nicht zu IntentService

Wenn jemand auf diese Informationen von jemandem hat bei Google kommentieren bitte geschickt werden!

+0

Sie müssen die Geofences beim Neustart erneut hinzufügen. Wie die Dokumentation sagt, werden Geofences beim Neustart entfernt. –