2013-06-11 6 views

Odpowiedz

17

Geofences nie przetrwają po ponownym uruchomieniu komputera. Przetestowałem i możesz znaleźć próbkę here.

Musisz posłuchać akcji BOOT_COMPLETED i ponownie dodać geofences.

Uwaga: Jeśli aplikacja zainstalowana na zewnętrznym pamięci (karta SD), nigdy nie otrzyma Boot Kompletna działania. Musisz więc podać android:installLocation="internalOnly" w manifest tag. Dzieje się tak, ponieważ urządzenie z Androidem będzie transmitować BOOT_COMPLETED akcja przed skonfigurowaniem pamięci zewnętrznej.

+0

Witam, w tym http://developer.android.com/training/location/geofencing.html samouczku naprawdę nie rozumiem użycia 'SharedPreferences', ponieważ nigdy nie są używane w czasie dostępu do danych. Czy wiesz, dlaczego używane jest urządzenie do przechowywania ciągłego. –

+1

Kiedy zostaniesz wyzwolony z Geofence, dostaniesz identyfikator tej konkretnej strefy geofence. Ale w czasie rzeczywistym mamy dużo informacji zamiast tylko id. SharedPreferences jest tak samo jak pamięcią masową, aby zapisać informacje o geofence, takie jak id, messages, lat, lng i kilka innych wartości z nim związanych. – Sundeep1501

+0

Dzięki Sundeep to logiczne. Przechowuję już dane Geofence w bazie danych. Byłem po prostu zakłopotany i zakładając, że może to być GeoFence Api, wykorzystując dane, które zostały zapisane w "SharedPreferences". –

-1

Jakie dane chcesz zachować? Czy jest to region geofence w Twoim urządzeniu lub region geofence zapisany przez interfejs API lokalizacji usługi Google Play?

Uważam, że urządzenie musi zarejestrować region (określony przez jego szerokość, długość i szerokość) w Usłudze Google Play (za pośrednictwem LocationClient). Musisz również podać czas wygaśnięcia, typ przejścia, który chcesz zgłosić, oraz zamiar, z którego otrzymasz powiadomienie.

Ten region będzie przechowywany (zdalnie) nie w twojej aplikacji. Po upływie czasu wygaśnięcia usługa Google Play automatycznie ją usunie. Możesz także ustawić go jako NEVER_EXPIRE. Jeśli region jeszcze nie wygasł, usługa Google Play powiadomi o tym Twoją aplikację (w intencji wysyłanej podczas wywoływania addGeofences).

Źródło regionu (szerokość, długość, promień) zależy od implementacji.

+0

dziękuję, czy masz na to źródło? – ligi

+0

Zobacz te dokumenty: http://developer.android.com/reference/com/google/android/gms/location/Geofence.Builder.html i [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

Po prostu przyjrzałem się przykładowej aplikacji GeofencingDetection. – ogramus

4

Nie znalazłem żadnej dokumentacji potwierdzającej to, ale moje własne eksperymenty pokazały, że nie są one zachowywane po ponownym uruchomieniu komputera.

Moja konfiguracja była następująca:

  • aplikacja Run
  • Aplikacja tworzy różne granic geograficznych na pierwszym uruchomieniu tylko jako NEVER_EXPIRE
  • aplikacja Wyjście
  • używać telefonu w obszarach oznaczonych ogrodzeń
  • Potwierdź kratki wyzwalające oczekujące zamiary, które są wysyłane do IntentService
  • Zostaw region
  • Reboot phone
  • Ponownie wprowadź regionu
  • oczekiwaniu zamiar nie zostanie wysłany do IntentService

Jeśli ktoś ma więcej informacji na ten temat od kogoś w Google prosimy o komentarz!

+0

Musisz ponownie dodać geofences przy ponownym uruchomieniu komputera. W dokumentacji mówi się, że geofences są usuwane przy ponownym uruchomieniu. –