Ottimizza il consumo di energia per la tua app

Questo documento descrive le best practice su come ottimizzare il consumo energetico in un'app di navigazione mobile creata utilizzando l'SDK di navigazione. Allo stesso tempo, descrive i compromessi da considerare quando si utilizzano queste pratiche. In particolare, il presente 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 frame.
  • Strategie per utenti finali per istruire gli utenti dell'app a gestire l'utilizzo dei dispositivi durante la navigazione.

Perché ottimizzare l'app di navigazione?

A seconda della situazione, gli utenti dell'app potrebbero eseguire indicazioni di navigazione per lunghi periodi di tempo. Ad esempio, il corriere e i corrieri per le consegne possono lavorare molte ore, completando le assegnazioni in un territorio che non conosci. In questi casi, si affidano molto alle indicazioni passo passo in-app. Questo determina alcuni problemi tipici:

  • Consumo della batteria e disponibilità di caricabatterie. Un uso intensivo della navigazione può causare un consumo eccessivo delle batterie dei dispositivi più velocemente del previsto. Sebbene molti utenti possano risolvere il problema caricando il dispositivo nel veicolo, i conducenti a due ruote non possono farlo.
  • Limitazione del dispositivo dovuta al calore. Anche gli utenti che ricaricano continuamente il dispositivo potrebbero riscontrare problemi. Un consumo elevato di energia per lunghi periodi di tempo può provocare il surriscaldamento del dispositivo, con conseguente limitazione termica e la conseguente perdita di prestazioni.

Le app di navigazione passo passo si basano su funzionalità che consumano molta energia come schermo, GPS e comunicazione radio con torri cellulari, quindi è 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 stabilire i compromessi appropriati tra prestazioni e ottimizzazione del consumo energetico.

Cosa consuma più energia?

Questa sezione suddivide le attività in-app associate al consumo elevato in due categorie:

  • Rendering schermo
  • Aggiornamenti posizione

Rendering 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 di GPU e CPU. Analogamente, se l'utente lascia lo schermo acceso per lunghi periodi di tempo, viene consumata più batteria.

In una certa misura, possono essere previsti consumi energetici elevati da parte di conducenti o passeggeri che si affidano a una mappa visibile per navigare, soprattutto se utilizzano l'app continuamente per molte ore. In questo scenario, l'app esegue anche una percentuale di rendering più elevata sullo schermo, perché la mappa viene poi aggiornata in tempo reale. In alcuni casi, lo schermo può rimodellarsi quasi continuamente, soprattutto quando l'utente guida da una posizione all'altra senza fermarsi.

Aggiornamenti posizione

Oltre al rendering dello schermo, altre due attività di navigazione consumano energia del dispositivo:

  • Segnali radiotrasmettitori e utilizzo del GPS
  • Aggiornamenti e condivisione della posizione, ad esempio per fornire un orario di arrivo stimato o segnalare la posizione di un veicolo in una flotta.

Le comunicazioni GPS e radio cellulare si basano entrambe 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, sostanzialmente funzionano ininterrottamente 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 base cellulare determina il consumo di energia, poiché il dispositivo utilizzerà il segnale minimo necessario per continuare la navigazione per evitare di cambiare torri. Pertanto, un dispositivo che naviga in un'area con scarsa connettività utilizzerà più energia rispetto a uno che si trova nelle vicinanze di una stazione base. Inoltre, alcune app potrebbero condividere aggiornamenti della posizione con un servizio di gestione centrale del parco risorse e pertanto dovranno comunicare con un server per eseguire questa operazione.

Ottimizzare il consumo di energia della tua app

Il problema dell'ottimizzazione del consumo energetico nelle app di navigazione è che queste app dipendono molto da risorse che consumano molta energia, il che limita le opzioni per mitigare l'impatto senza scendere a compromessi come la limitazione dell'uso dello schermo. Questa sezione fornisce un elenco di approcci che puoi adottare quando ottimizzi la tua app, ordinandolo da quello con l'impatto maggiore a quello con il minore impatto.

Modificare la frequenza fotogrammi

La schermata aggiorna ciò che viene visualizzato con una frequenza nota come frequenza fotogrammi. In genere, la frequenza fotogrammi viene misurata in f/s (frame al secondo). Poiché il rendering dello schermo utilizza molta CPU o GPU, puoi ridurre la frequenza fotogrammi per risparmiare energia.

Lo svantaggio quando si riduce la frequenza fotogrammi è che il rendering dello schermo può apparire meno fluido, soprattutto se la mappa viene aggiornata di frequente. Questo può essere più evidente quando la mappa viene ingrandita per mostrare dettagli elevati, quando l'utente viaggia ad alta velocità o quando cambia notevolmente la velocità o la direzione.

Consulta la sezione Frequenza fotogrammi nella documentazione per gli sviluppatori di Android Media Dev Center per scoprire di più sulla modifica delle frequenze fotogrammi.

Anche se non puoi controllare il modo in cui l'utente finale imposta la luminosità dello schermo del dispositivo o per quanto tempo lo schermo rimane acceso, puoi fornire un'opzione di guida alla navigazione senza una mappa. Questo permette all'utente finale di scegliere l'opzione per risparmiare energia. Ad esempio, se i conducenti lavorano regolarmente nello stesso quartiere, potrebbero non aver bisogno di indicazioni basate sulle mappe. La navigazione senza una mappa può essere abilitata impostando una destinazione e avviando la guida nell'SDK di navigazione, ma non visualizzando una mappa.

Per nascondere l'interfaccia utente di navigazione, non aggiungere NavigationView o SupportNavigationFragment oppure, se lo hai già fatto, rimuovi il codice che li aggiunge. Il seguente codice viene modificato dall'app demo per Android SDK di navigazione e mostra l'utilizzo dei commenti per rimuovere il codice che aggiunge la UI di navigazione:

//Obtain a reference to the NavigationFragment
//setContentView(R.layout.activity_nav_fragment);
//mNavFragment = (SupportNavigationFragment)   getSupportFragmentManager().findFragmentById(R.id.navigation_fragment);

L'SDK di navigazione continuerà ad aggiornare le posizioni delle informazioni sulla strada, l'orario di arrivo stimato e la distanza rimanente del percorso. Inoltre, la tua app potrà continuare a iscriversi a tutti gli eventi organizzati dall'SDK man mano che il conducente procede. Questo non è appropriato per tutti i casi d'uso e, ovviamente, non è un buon consiglio nei casi in cui il conducente ha bisogno di vedere la mappa e seguire le indicazioni visive. I seguenti screenshot mostrano un confronto fianco a fianco tra l'attivazione/disattivazione delle visualizzazioni delle mappe durante la navigazione attiva.

App demo in esecuzione con la visualizzazione mappa visibile.
Figura 1.SDK di navigazione App demo per iOS che mostra la demo di Data Back
App demo in esecuzione senza visualizzazione mappa visibile.
Figura 2.App demo in esecuzione senza visualizzazione mappa visibile. Tieni presente che il tempo rimanente, la distanza e la posizione della strada sono ancora in fase di aggiornamento.

Usa uno stile mappa scuro

Valuta la possibilità di definire lo stile della mappa in modo da utilizzare un tema scuro per ridurre la quantità di energia necessaria per visualizzare la mappa sullo schermo.

L'SDK di navigazione esegue il rendering delle sue mappe utilizzando l'SDK Google Maps per Android, che contiene opzioni per assegnare uno stile a qualsiasi visualizzazione di mappa non di navigazione nella tua app. La visualizzazione di navigazione supporta anche l'applicazione forzata della modalità Buio. Ciò potrebbe non influire allo stesso modo su tutti i dispositivi a causa delle differenze nel tipo di schermo, ma in alcuni casi consente un potenziale risparmio energetico. Da uno studio recente è emerso che la quantità di energia risparmiata con la modalità Buio su alcuni schermi dipende dalla luminosità iniziale dello schermo. Ad esempio, la modalità Buio risparmia più energia sugli schermi impostati alla massima luminosità rispetto agli schermi la cui luminosità è già regolata fino al 30-50% del massimo. Questo è un aspetto importante da considerare quando si utilizza la modalità Buio per le app, perché il risparmio energetico dipende dal modo in cui l'utente finale imposta la luminosità dello schermo.

Per scoprire di più sulla modifica della UI di navigazione, consulta Modificare l'UI di navigazione.

Screenshot dell'SDK di navigazione in esecuzione su un iPhone 15 Pro con uno stile mappa scuro.
Figura 3.SDK di navigazione configurato con uno stile mappa scura

Per creare uno stile scuro per la mappa, utilizza un oggetto MapStyleOptions con uno stile JSON che rappresenta lo stile di mappa scuro che preferisci. Gli stili JSON legacy possono essere creati mediante l'editor di stili legacy all'indirizzo https://mapstyle.withgoogle.com/.

Modificare la frequenza di aggiornamento della posizione GPS

Quando valuti il consumo di energia derivante dagli aggiornamenti di posizione inviati dal dispositivo, concentrati più sulla frequenza degli aggiornamenti della posizione piuttosto che sulla quantità di dati inviati nella trasmissione.

Non puoi controllare direttamente questa funzionalità nell'SDK di navigazione. Tuttavia, se la tua app Android richiede la posizione in modo indipendente, dovresti prendere in considerazione i consigli riportati nell'articolo sull'ottimizzazione della posizione per la batteria nella documentazione per gli sviluppatori Android. Lo stesso consiglio vale per l'utilizzo di fonti di localizzazione non GPS (cella e Wi-Fi).

Informa gli utenti

Gli utenti della tua app potrebbero voler sapere come ottimizzare il proprio consumo energetico. Per aiutarli a ridurre il consumo energetico delle app, consiglia agli utenti di:

  • Blocca lo smartphone
  • Imposta 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
  • Evitare che il dispositivo si surriscaldi
  • Connettiti alla rete Wi-Fi del veicolo, se disponibile
Scopri come ottimizzare la batteria del dispositivo Android per consigli agli utenti finali su come prolungare la durata della batteria su Android. Ricorda che questi consigli includono azioni che potrebbero peggiorare l'efficacia di un'app di navigazione, come descritto nella sezione Ottimizzare l'utilizzo della batteria dell'app in questa guida.

Misurare il consumo energetico

Puoi utilizzare strumenti di livello professionale per misurare il consumo energetico, ma spesso è difficile o costoso ottenerli. Le app e gli strumenti di profilazione IDE, come Power Profiler in Android Studio, e il riquadro Utilizzo della batteria in XCode Organizzar misurano il consumo energetico, ma può essere difficile rimuovere l'effetto dei processi in background o impostare una base di riferimento delle prestazioni su cui misurare. In alcuni casi, le restrizioni del dispositivo potrebbero impedire l'accesso ai dati necessari.

Puoi utilizzare hardware per il monitoraggio dell'alimentazione per scopi specifici e modificare la configurazione del collegamento della batteria, con prodotti e servizi commerciali disponibili per farlo. Tieni presente che tali modifiche potrebbero invalidare la garanzia del dispositivo.