Questo documento descrive le best practice per ottimizzare il consumo energetico in un'app di navigazione mobile creata utilizzando l'SDK Navigation. Allo stesso tempo, descrive i compromessi da considerare quando si utilizzano queste pratiche. In particolare, questo documento tratta i seguenti argomenti:
- Fonti di consumo energetico elevato, classificate dalla più alta alla più bassa.
- Strategie per ottimizzare il consumo energetico, in ordine di importanza, a partire dalla frequenza fotogrammi.
- Strategie per gli utenti finali per insegnare agli utenti della tua app come gestire l'utilizzo del dispositivo durante la navigazione.
Perché ottimizzare l'app di navigazione?
A seconda della situazione, gli utenti della tua app potrebbero eseguire le indicazioni stradali per lunghi periodi di tempo. Ad esempio, i conducenti e i corrieri possono lavorare per molte ore, completando le consegne in territori sconosciuti. In questi casi, fanno molto affidamento sulle indicazioni stradali passo passo in-app. Questo comporta alcuni problemi tipici:
- Consumo della batteria e disponibilità dei caricabatterie. L'utilizzo intensivo della navigazione può causare un consumo della batteria del dispositivo più rapido del previsto. Sebbene molti utenti possano risolvere il problema ricaricando il dispositivo nel veicolo, i conducenti di veicoli a due ruote non possono farlo.
- Limitazione del dispositivo a causa del calore. Anche gli utenti che ricaricano continuamente il dispositivo possono riscontrare problemi. Un consumo energetico elevato per lunghi periodi di tempo può causare il surriscaldamento del dispositivo, con conseguente limitazione termica e successiva perdita di prestazioni.
Le app di navigazione passo passo si basano su funzionalità ad alto consumo energetico, come lo schermo, il GPS e la comunicazione radio con le torri cellulari, pertanto è una best practice ottimizzare il consumo energetico della tua app mobile. Inoltre, devi considerare le esigenze di consumo energetico del tuo pubblico di destinazione, in modo da poter trovare il giusto compromesso tra prestazioni e ottimizzazione del consumo energetico.
Cosa consuma più energia?
Questa sezione suddivide le attività in-app associate a un consumo energetico elevato in due categorie:
- Rendering dello schermo
- Aggiornamenti posizione
Rendering dello schermo
Il rendering dello schermo di solito causa il consumo energetico più elevato nelle app di navigazione mobile. Ogni volta che il dispositivo disegna una mappa e altri elementi UI sullo schermo, si basa sull'elaborazione della GPU e della CPU. Analogamente, quando l'utente lascia lo schermo acceso per lunghi periodi, il consumo di energia aumenta.
In una certa misura, puoi aspettarti un consumo energetico elevato da parte di conducenti o passeggeri che si affidano a una mappa visibile per la navigazione, soprattutto se utilizzano l'app in modo continuativo per molte ore. In questo scenario, l'app esegue anche una frequenza di rendering più elevata sullo schermo perché la mappa viene aggiornata in tempo reale. In alcuni casi, lo schermo può essere ridisegnato quasi continuamente, soprattutto quando l'utente guida da una località all'altra senza fermarsi.
Aggiornamenti posizione
Oltre al rendering dello schermo, altre due attività di navigazione consumano la batteria del dispositivo:
- Utilizzo della torre cellulare radio e del GPS
- Aggiornamenti e condivisione della posizione, ad esempio per fornire un orario di arrivo stimato o per segnalare le posizioni di un veicolo di una flotta.
Sia il GPS che la comunicazione tramite segnale radio cellulare si basano su operazioni di avvio che consumano molta energia: il GPS deve trovare i satelliti e i segnali radio cellulari devono negoziare con le torri e stabilire una connessione. Per questi motivi, vengono eseguite praticamente in modo continuo durante la navigazione, anche se i segnali radio cellulari rimangono attivi per 20-30 secondi nel tentativo di ridurre al minimo i costi di avvio. Il sistema operativo controlla queste impostazioni, che non puoi configurare facilmente nella tua app.
Per gli aggiornamenti della posizione, il consumo di energia varia in base a fattori imprevedibili. Ad esempio, la distanza tra il dispositivo e la stazione base della rete mobile determina l'utilizzo di energia, poiché il dispositivo utilizzerà il segnale minimo necessario per continuare la navigazione ed evitare di cambiare ripetitore. Pertanto, un dispositivo che naviga in un'area con scarsa connettività utilizzerà più energia di uno che si trova vicino a una stazione base. Inoltre, alcune app potrebbero condividere gli aggiornamenti della posizione con un servizio di gestione della flotta centralizzato e, pertanto, dovranno comunicare con un server per farlo.
Ottimizza il consumo energetico dell'app
La sfida per l'ottimizzazione del consumo energetico nelle app di navigazione è che queste app dipendono fortemente da risorse che consumano molta energia, il che limita le opzioni per mitigare l'impatto senza scendere a compromessi, ad esempio limitando l'utilizzo dello schermo. Questa sezione fornisce un elenco di approcci che puoi adottare per ottimizzare la tua app, in ordine di impatto dal più alto al più basso.
Modifica la frequenza fotogrammi
Lo schermo aggiorna ciò che mostra a una frequenza nota come frequenza fotogrammi, solitamente misurata in frame al secondo (FPS). Poiché il rendering dello schermo utilizza una notevole quantità di elaborazione della CPU e della GPU, puoi ridurre la frequenza fotogrammi per risparmiare energia.
Quando riduci la frequenza fotogrammi, il rendering della mappa e i gesti interattivi (come la panoramica, lo zoom o la rotazione) possono apparire meno fluidi. Per bilanciare l'efficienza energetica con un'esperienza utente reattiva, puoi mantenere una frequenza fotogrammi di base bassa e aumentarla dinamicamente durante le interazioni attive degli utenti.
Per scoprire di più sulla modifica delle frequenze fotogrammi, consulta la sezione Frequenza fotogrammi nella documentazione per lo sviluppo di Android Media Dev Center.
Regolazione automatica della frequenza fotogrammi
A partire dalla versione 7.8.0, l'SDK Navigation regola automaticamente la frequenza fotogrammi della mappa durante la navigazione attiva per migliorare le prestazioni e ridurre il consumo della batteria. Quando il dispositivo entra in modalità a basso consumo, la frequenza fotogrammi della mappa scende a 10 f/s e viene reimpostata su 60 f/s al termine della navigazione o quando la modalità a basso consumo viene disattivata.
Naviga senza mappa
Anche se non puoi controllare il modo in cui l'utente finale imposta la luminosità dello schermo del dispositivo o per quanto tempo tiene acceso lo schermo, puoi fornire un'opzione per le indicazioni stradali senza mappa. In questo modo, l'utente finale può scegliere questa opzione per risparmiare energia. Ad esempio, se i conducenti lavorano regolarmente nello stesso quartiere, potrebbero non aver bisogno di indicazioni stradali basate su mappe così spesso. La navigazione senza mappa può essere attivata impostando una destinazione e avviando le indicazioni stradali nell'SDK Navigation, ma senza visualizzare una mappa.
Per nascondere la UI di navigazione, non aggiungere un NavigationView o un SupportNavigationFragment oppure, se l'hai già fatto, rimuovi il codice che li aggiunge. Il seguente codice è stato modificato dall'app demo per Android di Navigation SDK e mostra l'utilizzo dei commenti per rimuovere il codice che aggiunge l'interfaccia utente di navigazione:
//Obtain a reference to the NavigationFragment
//setContentView(R.layout.activity_nav_fragment);
//mNavFragment = (SupportNavigationFragment) getSupportFragmentManager().findFragmentById(R.id.navigation_fragment);
L'SDK Navigation continuerà ad aggiornare le posizioni agganciate alla strada, l'orario di arrivo stimato e la distanza rimanente del percorso. Inoltre, la tua app potrà comunque iscriversi a tutti gli eventi generati dall'SDK man mano che il conducente procede. Questo non è appropriato per tutti i casi d'uso e non è un buon consiglio nei casi in cui il conducente deve vedere la mappa e seguire le indicazioni visive. I seguenti screenshot mostrano un confronto fianco a fianco dell'attivazione/disattivazione delle visualizzazioni della mappa durante la navigazione attiva.
|
|
Usa uno stile di mappa scuro
Valuta la possibilità di applicare uno stile alla mappa per utilizzare un tema scuro e ridurre la quantità di energia necessaria per visualizzare la mappa sullo schermo.
L'SDK Navigation esegue il rendering delle mappe utilizzando Maps SDK for Android, che contiene opzioni per lo stile di qualsiasi visualizzazione di mappa non di navigazione nella tua app. La visualizzazione di navigazione supporta anche l'attivazione forzata della modalità Buio. Questo potrebbe non influire su tutti i dispositivi allo stesso modo a causa delle differenze nel tipo di schermo, ma consente un potenziale risparmio energetico in alcuni casi. Un recente studio ha rilevato che la quantità di energia risparmiata dalla modalità Buio su alcuni schermi dipende dalla luminosità dello schermo all'inizio. Ad esempio, la modalità Buio consente di risparmiare più energia sugli schermi impostati sulla luminosità massima rispetto a quelli con luminosità già regolata al 30-50% del massimo. Questo è un aspetto importante da considerare quando utilizzi la modalità Buio per le tue app, perché il risparmio energetico sarà relativo alla luminosità dello schermo impostata dall'utente finale.
Per scoprire di più sulla modifica della UI di navigazione, consulta Modifica la UI di navigazione.
Per creare uno stile scuro per la mappa, utilizza un oggetto MapStyleOptions con uno stile JSON che rappresenta lo stile di mappa scuro che hai scelto. Gli stili JSON legacy possono essere creati utilizzando l'editor di stili legacy all'indirizzo https://mapstyle.withgoogle.com/.
Modifica la frequenza di aggiornamento della posizione GPS
Quando valuti il consumo di energia degli aggiornamenti della posizione inviati dal dispositivo, concentrati maggiormente sulla frequenza degli aggiornamenti della posizione piuttosto che sulla quantità di dati inviati nella trasmissione.
Non si tratta di un aspetto che puoi controllare direttamente nell'SDK Navigation, ma se la tua app per Android richiede la posizione in modo indipendente, devi prendere in considerazione i consigli riportati nell'articolo Ottimizza la posizione per la batteria nella documentazione per lo sviluppo Android. Lo stesso consiglio vale per l'utilizzo di origini località non GPS (rete dati e Wi-Fi).
Tieni informati i tuoi utenti
Gli utenti della tua app potrebbero voler sapere come ottimizzare il consumo energetico. Per aiutarli a ridurre il consumo energetico delle loro app, consiglia agli utenti di procedere nel seguente modo:
- Blocca lo smartphone
- Metti l'app di navigazione in background
- Se possibile, utilizza la navigazione senza mappa
- Riduci la luminosità dello schermo utilizzando la modalità Buio per gli schermi OLED e AMOLED o attivando la luminosità adattiva.
- Mantieni il dispositivo fresco
- Connettiti al Wi-Fi del veicolo, se disponibile
Misura il consumo energetico
Puoi utilizzare strumenti di livello professionale per misurare il consumo energetico, ma spesso è difficile o costoso ottenerli. Gli strumenti di profilazione delle app e degli IDE, come Power Profiler in Android Studio e il riquadro Utilizzo della batteria in XCode Organizer, misurano il consumo energetico, ma può essere difficile rimuovere l'effetto dei processi in background o impostare una base di riferimento delle prestazioni rispetto alla quale eseguire la misurazione. In alcuni casi, le limitazioni del dispositivo potrebbero impedire l'accesso ai dati necessari.
Puoi utilizzare hardware di monitoraggio dell'alimentazione per scopi speciali e modificare la configurazione della connessione della batteria. Esistono prodotti e servizi commerciali che ti aiutano a farlo. Tieni presente che la modifica dei dispositivi in questo modo potrebbe invalidare la garanzia del dispositivo.