2014-07-20 26 views
5

Pracuję z Geofence API Sample application Mam to uruchomione i wydaje się działać poprawnie. Wprowadziłem modyfikacje, aby użyć BroadcastReceiver zamiast IntentService.Przykładowa aplikacja Android Geofencing działa tylko wtedy, gdy inna aplikacja jest otwarta przy użyciu GPS

Ale otrzymam powiadomienia tylko wtedy, gdy mam otwartą inną aplikację korzystającą z GPS, taką jak Mapy lub aplikacja GPS Tester.

Jeśli nie mam otwartej żadnej z tych aplikacji i wchodzę do strefy stref geofence, nic się nie dzieje. Ale zaraz po uruchomieniu jednego z nich otrzymam powiadomienie w ciągu kilku sekund.

+0

Czy występuje ten sam problem z niezmodyfikowaną oryginalną aplikacją? Czy jest to związane z twoją zmianą z użyciem 'BroadcastReceiver'? A jeśli tak, kiedy mówisz "otrzymaj powiadomienie", jak konkretnie to testujesz? – CommonsWare

+0

@CommonsWare Otrzymałem ten sam wynik z niezmodyfikowaną aplikacją (zwróć uwagę, że musiałem dodać tag meta-danych do manifestu aplikacji, aby go uruchomić w ogóle, była to jedyna zmiana w stosunku do tego, jak go ściągnąłem). W rzeczywistości przełączyłem się na odbiornik, ponieważ szukałem go, aby rozwiązać ten problem i znalazłem kilka sugestii, że Odbiornik pomógł ludziom uzyskać oddzwonienia z geofencingami bardziej konsekwentnie. Przykładowy kod (i mój odbiorca) wysyła powiadomienie do paska powiadomień po uruchomieniu wyzwalacza geofence. Więc moim jedynym testem jest to, czy kiedykolwiek dostanę to powiadomienie. – FoamyGuy

+0

Jeśli dosłownie wchodzisz w strefę geofence, spróbuj zdefiniować większą strefę i być w poruszającym się pojeździe. Byłbym zaskoczony, gdyby zarejestrowana geofence spowodowała dużą aktywność GPS w oparciu o ograniczony ruch, a dostawca sieci może być zbyt niedokładny w przypadku małej strefy geofence. – CommonsWare

Odpowiedz

2

Skończyłem na stworzeniu usługi, która zmusza GPS do pozostania aktywnym, żądając aktualizacji lokalizacji w relatywnie szybkim tempie.

Chociaż jest to niewątpliwie kiepska praca dla "prawdziwej" aplikacji. To działało dla moich celów. W którym musiałem być w stanie przedstawić pracowitym dowód koncepcji dla publiczności, co przeszkodziło mi w wykorzystaniu punktów geo, które zostały dalej rozłożone.

2

Nawet ja też miałem problem z otrzymaniem powiadomienia o Geofence, gdy tylko wszedłem do Geofence lub opuściłem. Zawsze były opóźnienia w powiadomieniach, dopóki nie znalazłem naprawdę ładnej Biblioteki Lokalizacja o nazwie little-fluffy-location-library, która służy mojemu celowi. Aktualizacje lokalizacji będą transmitowane do Twojej aplikacji okresowo.

Według dokumentacji jest napisane, że:

pracach bibliotekę przy użyciu biernego słuchacza lokalizacji Froyo'S (możliwe tylko z Android 2.2 iw górę, więc dlaczego to działa najlepiej z nim), który słucha aktualizacjach lokalizacji wymaganych przez inne aplikacje w telefonie. Najdokładniejsza lokalizacja jest przesyłana do Twojej aplikacji co około 15 minut. Jeśli aktualizacja lokalizacji nie została odebrana z innej aplikacji przez godzinę, biblioteka wymusza aktualizację lokalizacji.

Myślę, że powinieneś spróbować z tą biblioteką i daj mi znać, czy to działa dla Ciebie!

+0

czy wiesz, czy ta biblioteka jest nadal wymagana w aktualnej wersji Androida API? Mam ten sam problem. GeoFence uruchamia się tylko wtedy, gdy inna aplikacja, na przykład Google Maps, korzysta z usług lokalizacyjnych. –