ho bisogno di fare il monitoraggio di sfondo GPS su un telefono Android, e sto attualmente intenzione di avere due scenari:tracciamento GPS Android e Wakelock
- Quando il telefono è collegato a un (auto) caricabatterie, ottenere frequenti posizioni GPS (ogni minuto).
- Quando il telefono non è collegato a un caricabatterie, eseguire il polling solo per una posizione ogni 5-30 minuti, a seconda della quantità di batteria interessata.
So che dovrò implementare il tracciamento in un servizio e probabilmente mostrare una notifica per mantenere in vita il servizio. Tuttavia, deduco che il telefono potrebbe entrare in modalità di sospensione in qualsiasi momento, il che interromperebbe il tracciamento GPS.
Per questi scenari, qual è il modo migliore per eseguire il tracciamento GPS in background continuo, senza che il telefono vada a dormire e senza scaricare troppa energia?
Finora ho raccolto la seguente:
per lo scenario 1, io probabilmente bisogno di un acquisiscono un Wakelock, e mantenere la CPU svegli tutto il tempo (ma lo schermo può dormire). L'applicazione MyTracks sembra fare questo in TrackRecordingService. OpenGPSTracking sembra fare the same.
Per lo scenario 2, posso utilizzare AlarmManager per pianificare un controllo ogni x minuti. Il mio servizio dovrà acquisire un WakeLock temporaneo, attendere una singola posizione GPS, quindi fermarsi e rilasciare nuovamente il WakeLock.
Come sarebbe il consumo di energia confrontare per questi due metodi (WakeLock permanente vs AlarmManager)? Il GPS può ricevere una posizione precisa in un ragionevole lasso di tempo quando esegue il controllo solo ogni 30 minuti?
Ci sono alcune domande correlate su StackOverflow, ma nessuna con risposte soddisfacenti. Fra i più semi-utile:
- how to keep application running in background? keep collecting data? (mi ha segnalato MyTracks)
- Tracking user's sms and geo position in the background - is my idea working?
- Android service with always on GPS
Qualche idea di quanto il wakelock influenzi la batteria? E quanto tempo ci vorrà per acquisire una posizione se è fatta solo una volta ogni pochi minuti? – Ralf
La durata della batteria del dispositivo sarà influenzata in modo significativo dall'utilizzo di questa API. Non acquisire WakeLock a meno che tu non ne abbia davvero bisogno, utilizzare i livelli minimi possibili e assicurarti di rilasciarlo il prima possibile. http://developer.android.com/reference/android/os/PowerManager.html#ACQUIRE_CAUSES_WAKEUP – Rohit