15

Qualcuno sa se un'app whitelist in possesso di un wake-lock parziale può ricevere aggiornamenti di posizione mentre il dispositivo si trova in Doze o l'app è in standby?In che modo la funzionalità Doze/Standby influisce sugli aggiornamenti di posizione?

I documenti Android (http://developer.android.com/training/monitoring-device-state/doze-standby.html) indicano solo che CPU e rete sono posticipate e non menzionano alcun effetto sugli aggiornamenti di posizione (ad esempio dal LocationManager). Sulla base di ciò, sembrerebbe che gli aggiornamenti di posizione non siano influenzati da Doze/Standby, quindi se un'app dispone di un wake-lock parziale (per mantenere la CPU in esecuzione), l'app dovrebbe essere in grado di ricevere gli aggiornamenti di posizione.

L'ho implementato e testato e ho rilevato che un'app non sembra ricevere aggiornamenti di posizione in Doze nonostante abbia un wake-lock parziale e sia autorizzata. È interessante notare che, quando ho lasciato il dispositivo sulla mia scrivania durante la notte con l'app con la sveglia, la batteria era quasi vuota al mattino, ma quando si ripeteva con l'app senza la sveglia, la batteria era quasi piena al mattino. Sembra quindi che l'app fosse in esecuzione per tutto il tempo, ma non stava ricevendo aggiornamenti sulla posizione.

Un po 'di background in più: l'app viene utilizzata per il monitoraggio della flotta, quindi stiamo cercando di capire se c'è un'app in grado di far funzionare un servizio in background che riceve in modo affidabile gli aggiornamenti di posizione quando è alimentato a batteria.

Grazie! -Tom B.

+0

Si prega di controllare [questa risposta] (http://stackoverflow.com/a/35914341/2826147). –

+2

Come hai richiesto la whitelist? – Jordy

risposta

3

Sì, questa sembra essere un'altra restrizione non documentata in modalità Doze, come mostra anche il mio test logs. La mia ipotesi è che alcune funzionalità hardware come il GPS siano generalmente disattivate in Doze, ma forse il LocationManager è disabilitato del tutto.

Poiché questa potrebbe essere solo una grave mancanza di documentazione, il consumo della batteria che si cita non dovrebbe assolutamente accadere in Doze, in quanto è esattamente ciò che Doze intende prevenire in primo luogo.

Si consiglia di inviare un bug report su tutto questo a https://code.google.com/p/android/issues/list

1

Nei miei aggiornamenti esperienza posizione sono ancora ricevuti quando in Doze, ma solo quando si utilizza una notifica di primo piano insieme con i metodi che avete descritto. Le chiamate di rete non funzionano.

Attenzione ad alcuni post StackOverflow che indicano solo l'autorizzazione REQUEST_IGNORE_BATTERY_OPTIMIZATIONS. La tua app verrà rifiutata dal Play Store quando definisci questa autorizzazione nel tuo manifest a causa di "dispositivo & abuso di rete" https://play.google.com/about/privacy-security/device-network-abuse/.

C'è anche un modo per richiedere manualmente questa autorizzazione con un intento. Non so se è anche proibito in quel modo. L'intero principio whitelist è un po 'vago per me.

2

Per ottenere gli aggiornamenti di posizione quando il telefono è in modalità inattiva, l'app deve essere autorizzata, ha il wake-lock parziale e inoltre non deve essere sulla stessa posizione (se ci si trova nella stessa posizione non è necessario aggiornare). Ho provato questo con Mock Locations, che stava dando una posizione falsa mentre il telefono era sulla mia scrivania.

+0

L'app "Mock Locations" funziona in modalità Doze? Voglio dire, come hai detto, il dispositivo dovrebbe essere in una posizione diversa in modo che la posizione aggiorni il fuoco. Quindi, con posizioni simulate, è necessaria un'app come "Mock Locations" che modifica la posizione del dispositivo, ma l'app deve funzionare anche in modalità Doze –

+0

No, non funziona in modalità Doze.Per lavorare in modalità Doze, l'app dovrebbe mostrare una finestra di dialogo in cui chiedere di metterla su whiteliste e "Mock Locations" non te lo chiede. –