muszę zrobić tło śledzenia GPS na telefonie z Androidem, a ja obecnie planuje posiadające dwa scenariusze:Android śledzenia GPS i blokada wybudzenia
- Gdy telefon jest podłączony do ładowarki (CAR), uzyskać częste lokalizacje GPS (co minutę).
- Gdy telefon nie jest podłączony do ładowarki, odpytywaj tylko o lokalizację raz na 5-30 minut, w zależności od poziomu naładowania baterii.
Wiem, że muszę wdrożyć śledzenie w usłudze i prawdopodobnie wyświetlić powiadomienie, aby utrzymać usługę przy życiu. Zdaję sobie jednak sprawę, że telefon może przejść w tryb uśpienia w dowolnym momencie, co zatrzymałoby śledzenie GPS.
Dla tych scenariuszy, jaki jest najlepszy sposób na ciągłe śledzenie GPS w tle, bez telefonu spać i bez opróżniania zbyt dużej mocy?
tej pory zebrałem następujące:
W scenariuszu 1, prawdopodobnie będę potrzebował nabyć blokada wybudzenia i zachować CPU jawie cały czas (ale ekran może spać). Wydaje się, że aplikacja MyTracks robi to w TrackRecordingService. OpenGPSTracking wydaje się robić the same.
Dla scenariusza 2, mogę użyć AlarmManager, aby zaplanować czek co X minut. Moja usługa będzie musiała uzyskać tymczasowy WakeLock, poczekać na jedną lokalizację GPS, a następnie zatrzymać i zwolnić WakeLock ponownie.
Jak porównać zużycie energii dla tych dwóch metod (permanent WakeLock vs AlarmManager)? Czy GPS może uzyskać dokładną lokalizację w rozsądnym czasie, gdy sprawdza tylko co 30 minut?
Istnieje kilka powiązanych pytań dotyczących StackOverflow, ale żaden z satysfakcjonującymi odpowiedziami. Niektóre półfabrykaty użytecznych:
- how to keep application running in background? keep collecting data? (wskazał mi MyTracks)
- Tracking user's sms and geo position in the background - is my idea working?
- Android service with always on GPS
Masz pojęcie, ile wakeloka wpływa na baterię? Ile czasu zajmie pozyskanie lokalizacji, jeśli odbywa się to tylko raz na kilka minut? – Ralf
Użycie tego interfejsu API znacząco wpłynie na żywotność baterii urządzenia. Nie kupuj WakeLocks, chyba że naprawdę ich potrzebujesz, używaj minimalnych możliwych poziomów i pamiętaj o zwolnieniu go tak szybko, jak to możliwe. http://developer.android.com/reference/android/os/PowerManager.html#ACQUIRE_CAUSES_WAKEUP – Rohit