2012-12-11 13 views
5

Sto lavorando a un'app di localizzazione per iPhone (iOS 6), che invia costantemente informazioni sulla posizione precise a un servizio Web. L'ho configurato in modo tale che l'app invii un pacchetto di localizzazione ogni minuto (a patto che ci sia stato un cambiamento significativo nella posizione). Questa parte dell'app funziona perfettamente (come attività in background), ma come ci si potrebbe aspettare influisce significativamente sulla durata della batteria con il GPS in qualsiasi momento (ho circa 6 ore di lavoro, non è male dato che sono abituato a collegare nel mio telefono in macchina e quando sono a casa così posso passare il giorno OK, ma ho bisogno di allungare il tempo di almeno 16 ore per essere pratico).Come faccio a localizzare l'iPhone in modo più efficiente che lasciare il GPS tutto il tempo?

Quello che mi piacerebbe fare è spegnere il GPS quando il telefono indica che non si è mosso significativamente per un po '. Questo è banale da fare usando i dati GPS stessi. Tuttavia, con il GPS disattivato, cosa potrei usare come trigger per riaccenderlo e riavviare la registrazione della posizione? Potrei semplicemente spegnerlo quando viene rilevato che non è stata generata alcuna nuova posizione per dire 5 minuti, quindi controllare la posizione X minuti dopo per vedere se è cambiata e agire di conseguenza. O forse potrei usare l'accelerometro in qualche modo intelligente, o qualche altro sensore, per attivare di nuovo l'accensione del GPS.

Dato che il tempo di viaggio è spesso una piccola parte della giornata, ha senso minimizzare l'attività GPS quando a casa o in ufficio ... ma come farlo in modo affidabile?

+0

Nel caso in cui qualcuno sia interessato, un esempio dell'output dell'app come sta attualmente è: https://motion.blob.core.windows.net/kml-motion/4a03a463-821a-4cd5-b4ba-a0f71aaa6c3e. kml. Questo è un file KML che può essere aperto e visualizzato direttamente in Google Earth. – ProfNimrod

+0

ho guardato il tuo file kml, ma ora posso solo guardare il file di testo normale. one Tipp: usa meno cifre dopo il komma, non hai bisogno di una posizione per avere una risoluzione di 1/1000 cm – AlexWien

+0

Grazie per la punta AlexWien - hai aggiunto qualche arrotondamento. – ProfNimrod

risposta

0

Se non sei preoccupato per la perdita di precisione causata dall'abbandonare il GPS per alcuni minuti, potresti considerare di lasciarlo completamente vuoto. Il meccanismo di localizzazione della torre cellulare funziona bene, anche se si posiziona sulla torre, che potrebbe essere lontana. Ma poi, in pochi minuti, è comunque facile viaggiare così lontano. E il localizzatore di rete che fa le torrette cellulari fa anche reti wifi, con una precisione di circa 20m. E il GPS non funziona comunque in casa. Quindi, lasciare il GPS spento e posizionare la posizione di rete su, per tutto il tempo.

+0

Scusa Avrei dovuto dire che sono preoccupato per la precisione nella domanda ... anche se avere una seconda modalità che passa in posizione di rete potrebbe essere utile - quando ad esempio vede la batteria scendere al 25% ... un'idea interessante. – ProfNimrod

2

Il modello che posso contemplare è utilizzare standard location service per ottenere la mia posizione, e una volta ottenuto, spegnerlo e accendere lo significant change location service che utilizza molta meno energia. E, una volta ricevuta una notifica di modifica significativa successiva (potresti voler ignorare la prima perché hai già la posizione esatta), puoi cambiare il servizio di localizzazione standard per ottenere la posizione precisa (supponendo che tu ne abbia bisogno ... se non avessi bisogno di una posizione super precisa, ovviamente dovresti semplicemente utilizzare un servizio di cambio di posizione significativo fin dall'inizio).

In alternativa, se lo stai facendo e utilizza ancora troppa energia, puoi disattivare completamente i servizi di localizzazione e quindi riattivarlo dopo un certo periodo di tempo, ma potresti perdere significative modifiche alla posizione nel frattempo. e se l'utente non si muove affatto, userà più energia della tecnica sopra descritta in molti scenari.

+0

Sì, attualmente sto utilizzando un servizio di cambio di posizione significativo e sto scoprendo che sta ancora utilizzando troppa energia. Il tuo secondo para arriva dritto al cuore del mio dilemma. Ecco perché mi chiedevo se ci sono trigger esterni a GPS che potrebbero essere combinati in modo affidabile per riattivare il servizio di localizzazione. – ProfNimrod

+0

@ProfNimrod Ahimè, non che io sappia. Questo è esattamente il significato del cambiamento significativo. Ma se anche questo richiede troppa energia, allora una soluzione basata sul timer è l'unica cosa a cui riesco a pensare e questo ha degli svantaggi significativi. Sospetto che l'unica altra opzione, il monitoraggio quando si lascia una [regione] (http://developer.apple.com/library/ios/documentation/userexperience/conceptual/LocationAwarenessPG/CoreLocation/CoreLocation.html#//apple_ref/doc/uid/TP40009497-CH2-SW13), non attirerà meno energia di un servizio di modifica significativo. Sospiro. – Rob

0

la mia app (in fase di sviluppo) gira 8 ore in background registrando una correzione al secondo nel file. questo è abbastanza, non migliorerà. non puoi avere entrambi, precisione GPS e 20 ore di batteria.
6 ore, che possono essere causati anche dalla comunicazione con il server (o abilitando il dispositivo spesso).

Ma un approccio interessante potrebbe essere il sensore di movimento, ma è una buona domanda quanta batteria ha bisogno.
conosci qualche app per iPhone in grado di registrare GPS precisi per oltre 8 ore? Non ho mai misurato, ma provo MotionX gps, per quanto tempo possono registrare.

+0

Che cos'è "akku"? È una lingua straniera? –

+0

sì il suo tedesco per accu, batteria – AlexWien

+0

Grazie per il chiarimento sul commercio tra batteria e precisione - indovina sono bloccato dover lavorare con la limitazione di 6-8 ore al momento ... speriamo entro un anno o così questo ha vinto essere una tale preoccupazione con batterie migliori e GPS più efficienti. – ProfNimrod

1

Questa non è una risposta completa, ma un'alternativa all'utilizzo del GPS è la resa dei pesi inerziale (dedotta). Questo può essere ottenuto usando solo l'accelerometro e gyros (e un po 'di matematica intelligente), con il GPS una volta ogni tanto come controllo. Non so quanto sarebbe accurato questo approccio, o quale sarebbe l'impatto sul tempo della batteria ...Ti farò sapere quando l'ho implementato ;-)

Anche se Android accelerometer accuracy (Inertial navigation) sembra suggerire che non ne vale la pena, ma penso che stia usando solo un accelerometro, e non fa uso di giroscopi - I due dispositivi forniscono diversi aspetti del movimento: Gyroscope vs Accelerometer?.

Problemi correlati