2011-10-24 6 views
6

Devo creare un'applicazione con un localizzatore GPS in esecuzione per circa un giorno. Sono a conoscenza di domande simili in SO, ma non ho trovato alcuna risposta ad alcune domande che ho.Mantenere attivo un servizio GPS e ottimizzare la durata della batteria

-Ho bisogno di un fix GPS ogni 10 minuti, quindi penso che il modo migliore per farlo è quello di avviare il servizio di localizzazione, ottenere una soluzione (o timeout) e interrompere il servizio (con removeUpdates()). Come posso avere un'applicazione (o un servizio o qualsiasi altra cosa) che esegue questo ciclo ogni 10 minuti e assicurati che continui finché rimane della batteria (anche se il dispositivo va in stop, dovrebbe riattivarlo ogni 10 minuti per ottenere una correzione)? Sta usando AlarmManager una buona idea?

-Posso aspettare che la batteria duri un giorno con questo metodo?

Ho controllato mytracks ma il listener gps sembra sempre acceso e la batteria dovrebbe durare non più di 5 ore.

Ho anche controllato CWAC Location Poller ma fa solo removeUpdates() su timeout e riavvia immediatamente il listener. Utilizza anche un wakelock mentre nel mio caso penso che un AlarmManager potrebbe essere un'idea migliore.

Qualsiasi aiuto/suggerimento benvenuto

risposta

4

Siete a posto con direttore di allarme io uso

Intent serviceIntent = new Intent(this, TrackerService.class); 
    mPendingIntent = PendingIntent.getService(this, 0, serviceIntent, 
      PendingIntent.FLAG_UPDATE_CURRENT); 

    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 

    alarmManager.cancel(mPendingIntent); 
    alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, 
       System.currentTimeMillis(), interval, mPendingIntent); 

in un'applicazione simile per il recupero della posizione di rete

intervallo è ms tra l'avvio del servizio

il servizio si avvia, ottiene la posizione e chiude

questo era molto più efficiente della batteria che in giro con un servizio attivo in attesa di rapporti

che il codice ho postato cancella prima gli allarmi precedenti in modo da non ottenere più di 1 :)

+0

Ok, grazie. Ci proverò e testerò la durata della batteria. – jul

0

è possibile controllare Passive Receiver Vi darà un aggiornamento posizione ogni volta che un altro la posizione dei dispositivi viene aggiornato - funziona solo su 2.2 o successiva

+2

Non posso usarlo, perché se nessun'altra app ottiene aggiornamenti sulla posizione, non otterrò nulla. – jul

Problemi correlati