2011-10-14 7 views
5

muszę zrobić tło śledzenia GPS na telefonie z Androidem, a ja obecnie planuje posiadające dwa scenariusze:Android śledzenia GPS i blokada wybudzenia

  1. Gdy telefon jest podłączony do ładowarki (CAR), uzyskać częste lokalizacje GPS (co minutę).
  2. 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:

Odpowiedz

5
  1. Gdy telefon jest podłączony do ładowarki u można nabyć blokada wybudzenia jako planujemy uzyskać częste lokalizacje GPS, AlarmManager nie wydaje się być świetnym pomysłem w tym przypadku.

  2. Gdy telefon nie jest podłączony do ładowarki, możesz użyć menedżera alarmów, ponieważ tylko odpytywanie dotyczy lokalizacji co 5-30 minut. Nabycie wakelock wpłynie znacząco na żywotność baterii.

Realizacja do u.

Pozdrawiam .... !!

+0

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

+0

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

6

Możesz używać odbiornika, jeśli zasilanie jest podłączone lub nie, i wykonaj odpowiednie czynności.

dla Power Connected:

public class PowerConnected extends BroadcastReceiver{ 
    @Override 
    public void onReceive(Context context, Intent intent) { 
    // TODO Auto-generated method stub 
    if(intent.getAction().equalsIgnoreCase("android.intent.action.ACTION_POWER_CONNECTED")){ 
     //Initialize your listener here... 
    } 
    } 

} 

W swoim pliku manifestu:

<receiver android:name=".receiver.PowerConnected" > 
<intent-filter > 
    <action android:name="android.intent.action.ACTION_POWER_CONNECTED" /> 
</intent-filter> 
</receiver> 

po odłączeniu zasilania:

public class PowerDisconnected extends BroadcastReceiver{ 
    @Override 
    public void onReceive(Context context, Intent intent) { 
    if(intent.getAction().equalsIgnoreCase("android.intent.action.ACTION_POWER_DISCONNECTED")){ 
    //Do your task here...  
    } 
} 
} 

W swoim pliku manifestu:

<receiver android:name=".receiver.PowerDisconnected" > 
<intent-filter > 
    <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" /> 
</intent-filter> 
</receiver> 

Teraz powinieneś użyć service i zainicjalizować swój GPS. Po podłączeniu zasilania użyj GPS_Provider w innym razie użyj network provider. Jeśli to konieczne, użyj wakelock.

+0

Dzięki, jest to przydatne. – Ralf

+0

powinieneś zaakceptować odpowiedź, która pozostanie niezmieniona. Dzięki .. –

+2

Podczas gdy zdecydowanie będę z tego korzystać, uważam, że nie odpowiada na moje podstawowe pytanie dotyczące najlepszej strategii śledzenia GPS. – Ralf