2013-06-11 11 views

risposta

17

Geofences non persisterà al riavvio. Ho provato e puoi trovare il campione here.

È necessario ascoltare l'azione BOOT_COMPLETED e aggiungere nuovamente i geofence.

Nota: Se la vostra applicazione installata su archiviazione esterna (scheda SD), non riceverete mai Boot Completa l'azione. Quindi devi specificare android:installLocation="internalOnly" nello manifest tag. Questo perché, dispositivo Android trasmette l'azione BOOT_COMPLETED prima di configurare la memoria esterna.

+0

Salve, in questo http://developer.android.com/training/location/geofencing.html tutorial davvero non capisco l'uso di 'SharedPreferences' perché non vengono mai usati in termini di accesso ai dati. Sai perché viene utilizzato Presistent Storage. –

+1

Quando vieni attivato da Geofence, riceverai l'id di quel particolare geofence. Ma in tempo reale abbiamo molte informazioni invece di un semplice id. SharedPreferences è proprio come lo spazio di archiviazione per salvare informazioni georeferenziate ousr come id, messaggi, lat, lng e pochi altri valori ad esso associati. – Sundeep1501

+0

Grazie Sundeep è logico. Sto già memorizzando i dati di Geofence nel database. Ero solo confuso e supponendo che Geofence Api possa usare i dati che sono stati salvati in "SharedPreferences". –

-1

Quali dati si desidera mantenere? È la regione Geofence del tuo dispositivo o la regione Geofence memorizzata dall'API di posizione del servizio di Google Play?

Credo che il dispositivo debba registrare una regione (definita dalla sua latitudine, longitudine e raggio) su Google Play Service (tramite LocationClient). È inoltre necessario fornire il tempo di scadenza, il tipo di transizione che si desidera ricevere e l'intento da cui si riceverà una notifica.

Questa regione verrà archiviata (remotamente) non nella tua app. Quando passerà la sua scadenza, Google Play Service lo rimuoverà automaticamente. Puoi anche impostarlo come NEVER_EXPIRE. Se la regione non è ancora scaduta, il servizio Google Play notificherà la tua app (tramite l'intento che invii quando chiami addGeofences).

L'origine della regione (lat, long, radius) dipende dalla tua implementazione.

+0

grazie, hai una fonte per questo? – ligi

+0

Guarda queste documentazioni: http://developer.android.com/reference/com/google/android/gms/location/Geofence.Builder.html e [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

Ho appena dato un'altra occhiata all'app di esempio GeofencingDetection. – ogramus

4

Non ho trovato alcuna documentazione che confermi questo, ma i miei esperimenti hanno dimostrato che non sono persistenti attraverso i riavvii.

La mia configurazione è la seguente:

  • applicazione Run
  • Applicazione imposta vari geofences sul primo lancio solo come NEVER_EXPIRE
  • applicazione Exit
  • Uso telefono in regioni segnate da recinti
  • Confermare che le sentinelle attivano gli intent in sospeso inviati a IntentService
  • Lascia la regione
  • Reboot telefono
  • Reinserire regione
  • attesa intento non viene inviato a IntentService

Se qualcuno ha maggiori informazioni su questo da parte di qualcuno a Google si prega di commento!

+0

È necessario aggiungere nuovamente i Geofence al riavvio. Come dice la documentazione, i geofences vengono rimossi al riavvio. –