Otimizar o consumo de energia do app

Este documento descreve as práticas recomendadas para otimizar o consumo de energia em um app de navegação para dispositivos móveis criado usando o SDK Navigation. Ao mesmo tempo, ele descreve as compensações a considerar ao empregar essas práticas. Em particular, este documento abrange o seguinte:

  • Origens de consumo de energia, classificadas da maior para a menor.
  • Estratégias para otimizar o consumo de energia, em ordem de importância, começando pela taxa de frames.
  • Estratégias para usuários finais para ensinar aos usuários do app como gerenciar o uso do dispositivo durante a navegação.

Por que otimizar seu app de navegação?

Dependendo da situação, os usuários do app podem usar a orientação de navegação por longos períodos. Por exemplo, motoristas e entregadores podem trabalhar por muitas horas, realizando tarefas em territórios desconhecidos. Nesses casos, eles dependem muito das orientações passo a passo no app. Isso resulta em alguns problemas típicos:

  • Drenagem da bateria e disponibilidade de carregadores. O uso intenso da navegação pode fazer com que as baterias dos dispositivos descarreguem mais rápido do que o esperado. Embora muitos usuários possam resolver esse problema carregando o dispositivo no veículo, os motoristas de veículos de duas rodas não podem.
  • Limitação do dispositivo devido ao calor. Mesmo os usuários que carregam o dispositivo continuamente podem ter problemas. O consumo de energia alto por longos períodos pode fazer com que o dispositivo aqueça, resultando em limitação térmica e perda de desempenho.

Os apps de navegação passo a passo dependem de recursos que consomem muita energia, como tela, GPS e comunicação por rádio com torres de celular. Por isso, é recomendável otimizar o uso de energia do seu app para dispositivos móveis. Além disso, considere as necessidades de uso de energia do público-alvo para fazer as trocas adequadas entre desempenho e otimização do consumo de energia.

O que consome mais energia?

Esta seção divide as atividades no app associadas ao alto consumo de energia em duas categorias:

  • Renderização da tela
  • Atualizações de localização

Renderização da tela

A renderização da tela geralmente causa o maior consumo de energia em apps de navegação para dispositivos móveis. Sempre que o dispositivo desenha um mapa e outros elementos da interface na tela, ele depende do processamento da GPU e da CPU. Da mesma forma, quando o usuário deixa a tela ligada por longos períodos, isso também consome mais energia.

Em certa medida, é possível esperar um alto consumo de energia de motoristas ou passageiros que dependem de um mapa visível para navegar, especialmente se eles usam o app continuamente por muitas horas. Nesse cenário, o app também executa uma taxa de renderização mais alta na tela porque o mapa é atualizado em tempo real. Em alguns casos, a tela pode ser redesenhada quase continuamente, especialmente quando o usuário dirige de um local para outro sem parar.

Atualizações de localização

Além da renderização da tela, outras duas atividades de navegação consomem energia do dispositivo:

  • Uso de torres de rádio celular e GPS
  • Atualizações e compartilhamentos de local, como fornecer um ETA ou informar as posições de um veículo em uma frota.

O GPS e a comunicação por rádio celular dependem de operações de inicialização que consomem muita energia: o GPS precisa encontrar satélites, e os rádios celulares precisam negociar com torres e estabelecer uma conexão. Por esses motivos, eles são executados continuamente durante a navegação, mesmo que os rádios de células permaneçam ativos por 20 a 30 segundos para minimizar os custos de inicialização. O sistema operacional controla essas configurações, que não podem ser configuradas facilmente no app.

Para atualizações de local, o uso de energia varia com base em fatores imprevisíveis. Por exemplo, a distância entre o dispositivo e a estação base celular determina o uso de energia, já que o dispositivo vai usar o sinal mínimo necessário para continuar a navegação e evitar a troca de torres. Portanto, um dispositivo navegando em uma área com conectividade ruim vai usar mais energia do que um que está perto de uma estação base. Além disso, alguns apps podem compartilhar atualizações de local com um serviço central de gerenciamento de frota e, portanto, precisam se comunicar com um servidor para fazer isso.

Otimizar o uso de energia do app

O desafio para otimizar o uso de energia em apps de navegação é que eles dependem muito de recursos que consomem muita energia, o que limita suas opções para reduzir o impacto sem fazer trocas, como restringir o uso da tela. Esta seção apresenta uma lista de abordagens que você pode usar ao otimizar seu app, em ordem de maior para menor impacto.

Mudar a taxa de frames

A tela atualiza o que está sendo mostrado em uma frequência conhecida como frame rate. A taxa de frames geralmente é medida em quadros por segundo (QPS). Como a renderização da tela usa muita CPU ou GPU, é possível reduzir a taxa de frames para economizar energia.

A desvantagem de reduzir a taxa de frames é que a renderização da tela pode parecer menos suave, especialmente se o mapa for atualizado com frequência. Isso pode ser mais óbvio quando o mapa é ampliado para mostrar detalhes, quando o usuário está viajando em alta velocidade ou quando muda a velocidade ou a direção de forma significativa.

Consulte a seção Taxa de frames na documentação para desenvolvedores do Android Media Dev Center para saber mais sobre como modificar taxas de frames.

Embora você não possa controlar como o usuário final define o brilho da tela do dispositivo ou por quanto tempo ele mantém a tela ligada, é possível oferecer uma opção de orientação de navegação sem um mapa. Isso permitiria que o usuário final escolhesse essa opção para economizar energia. Por exemplo, se os motoristas trabalham regularmente na mesma vizinhança, talvez não precisem de orientação baseada em mapas com tanta frequência. A navegação sem um mapa pode ser ativada ao definir um destino e iniciar a orientação no SDK do Navigation, mas sem mostrar um mapa.

Para ocultar a interface de navegação, não adicione uma NavigationView ou SupportNavigationFragment. Se você já tiver feito isso, remova o código que as adiciona. O código a seguir foi modificado do app de demonstração do Android do SDK Navigation e mostra o uso de comentários para remover o código que adiciona a interface de navegação:

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

O SDK de navegação vai continuar atualizando os locais fixados na estrada, o ETA e a distância restante da viagem, e seu app ainda pode se inscrever em todos os eventos gerados pelo SDK conforme o motorista avança. Isso não é adequado para todos os casos de uso e, claro, não é um bom conselho nos casos em que o motorista precisa ver o mapa e seguir a orientação visual. As capturas de tela a seguir ilustram uma comparação lado a lado de como alternar as visualizações do mapa durante a navegação ativa.

App de demonstração em execução com a visualização do mapa visível.
Figura 1.App de demonstração do iOS do SDK de navegação mostrando a demonstração de Data Back
App de demonstração em execução sem a visualização do mapa visível.
Figura 2.App de demonstração em execução sem a visualização do mapa visível. O tempo e a distância restantes, assim como o local aproximado da estrada, ainda estão sendo atualizados.

Usar um estilo de mapa escuro

Considere estilizar o mapa para usar um tema escuro e reduzir a quantidade de energia necessária para renderizar o mapa na tela.

O SDK Navigation renderiza os mapas usando o SDK do Maps para Android, que contém opções para criar estilos em qualquer visualização de mapa que não seja de navegação no app. A visualização de navegação também oferece suporte ao modo escuro forçado. Isso pode não afetar todos os dispositivos da mesma forma devido a diferenças no tipo de tela, mas permite economia de energia em alguns casos. Um estudo recente descobriu que a quantidade de energia economizada pelo modo escuro em algumas telas depende do nível de brilho inicial da tela. Por exemplo, o modo escuro economiza mais energia em telas definidas com brilho total do que em telas com brilho ajustado de 30 a 50% do máximo. Isso é importante ao usar o modo escuro nos seus apps, porque a economia de energia vai ser relativa à forma como o usuário final define o brilho da tela.

Para saber mais sobre como modificar a interface de navegação, consulte Modificar a interface de navegação.

Captura de tela do SDK de navegação em execução em um iPhone 15 Pro com um estilo de mapa escuro.
Figura 3.SDK do Navigation configurado com um estilo de mapa escuro

Para criar um estilo escuro para seu mapa, use um objeto MapStyleOptions com um estilo JSON que represente sua escolha de estilo de mapa escuro. Os estilos JSON legados podem ser criados usando o editor de estilo legado em https://mapstyle.withgoogle.com/.

Mudar a frequência de atualização do local do GPS

Ao considerar o consumo de energia das atualizações de local enviadas pelo dispositivo, foque mais na frequência das atualizações de local do que na quantidade de dados enviados na transmissão.

Isso não é algo que você pode controlar diretamente no SDK de navegação, mas se o app Android solicitar a localização de forma independente, considere o conselho no artigo Otimizar a localização para a bateria na documentação para desenvolvedores do Android. O mesmo conselho se aplica ao uso de fontes de localização que não são do GPS (celular e Wi-Fi).

Instrua seus usuários

Os usuários do app podem querer saber como otimizar o consumo de energia. Para ajudar a reduzir o consumo de energia nos apps, oriente os usuários a fazer o seguinte:

  • Bloquear o smartphone
  • Colocar o app de navegação em segundo plano
  • Usar a navegação sem um mapa, se possível
  • Reduzir o brilho da tela usando o modo escuro para telas OLED e AMOLED ou ativando o brilho adaptável.
  • Manter o dispositivo frio
  • Conectar ao Wi-Fi do veículo, se disponível
Consulte aproveitar ao máximo a bateria do dispositivo Android para receber dicas do usuário final sobre como prolongar a duração da bateria no Android. Lembre-se de que esse conselho inclui ações que podem prejudicar a eficácia de um app de navegação, conforme discutido em Otimizar o uso de energia do app neste guia.

Medir o consumo de energia

É possível usar ferramentas profissionais para medir o consumo de energia, mas muitas vezes é difícil ou caro obtê-las. Apps e ferramentas de criação de perfil de ambiente de desenvolvimento integrado, como o Power Profiler no Android Studio e o painel de uso da bateria no XCode Organizer, medem o consumo de energia, mas pode ser difícil remover o efeito de processos em segundo plano ou definir uma linha de base de desempenho para medir. Em alguns casos, as restrições do dispositivo podem impedir o acesso aos dados necessários.

É possível usar hardware de monitoramento de energia de finalidade especial e modificar a configuração de conexão da bateria. Além disso, existem produtos e serviços comerciais para ajudar você a fazer isso. Modificar dispositivos dessa maneira pode anular a garantia.