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 serem consideradas ao empregar essas práticas. Em particular, este documento aborda o seguinte:

  • Fontes de alto consumo de energia, classificadas da maior para a menor.
  • Estratégias para otimizar o consumo de energia, em ordem de importância, começando pelo frame rate.
  • Estratégias do usuário final para ensinar os usuários do app a 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 executar a orientação de navegação por longos períodos. Por exemplo, motoristas e entregadores podem trabalhar por muitas horas, concluindo tarefas em territórios desconhecidos. Nesses casos, eles dependem muito da navegação guiada no app. Isso resulta em alguns problemas típicos:

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

Os apps de navegação guiada dependem de recursos que consomem muita energia, como tela, GPS e comunicação de 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 seu público-alvo para fazer as compensações 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. Cada vez 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 usa mais energia.

Até certo ponto, você pode esperar um alto consumo de energia de motoristas ou motociclistas que dependem de um mapa visível para navegar, especialmente se eles usarem o app continuamente por muitas horas. Nesse cenário, o app também realiza uma taxa maior de renderização 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 celular e GPS
  • Atualizações e compartilhamento de localização, como para fornecer um horário de chegada previsto ou informar as posições de um veículo em uma frota.

A comunicação por GPS e rádio celular depende 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 celulares permaneçam ativos por 20 a 30 segundos na tentativa de minimizar os custos de inicialização. O sistema operacional controla essas configurações, que não podem ser facilmente configuradas no app.

Para atualizações de localização, 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 usa o sinal mínimo necessário para continuar a navegação, a fim de evitar a troca de torres. Portanto, um dispositivo que navega em uma área com conectividade ruim usa mais energia do que um que está perto de uma estação base. Além disso, alguns apps podem compartilhar atualizações de localização 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 de mitigar o impacto sem fazer compensações, como restringir o uso da tela. Esta seção fornece uma lista de abordagens que você pode adotar ao otimizar seu app, em ordem da mais para a menos impactante.

Mudar o frame rate

A tela atualiza o que está mostrando em uma frequência conhecida como taxa de quadros. O frame rate geralmente é medido em quadros por segundo (QPS). Como a renderização da tela usa muita CPU ou GPU, você pode reduzir o frame rate para economizar o consumo de energia.

A compensação ao reduzir o frame rate é 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 está ampliado, quando o usuário está viajando em alta velocidade ou quando muda a velocidade ou a direção em grande quantidade.

Em dispositivos iOS, o SDK do Maps para iOS expõe a preferredFrameRate propriedade para controlar o frame rate. A tabela abaixo mostra os valores do enumerador GMSFrameRate que podem ser ajustados:

kGMSFrameRatePowerSave

Use o frame rate mínimo para conservar o uso da bateria.

kGMSFrameRateConservative

Use um frame rate mediano para fornecer uma renderização mais suave e conservar ciclos de processamento.

kGMSFrameRateMaximum

Use o frame rate máximo para um dispositivo.

Para dispositivos de baixa qualidade, esse valor é de 30 QPS. Para dispositivos de alta qualidade, é de 60 QPS.

Para referência, consulte GMSFrameRate na documentação do SDK Navigation do Google para iOS.

Embora não seja possível controlar como o usuário final define o brilho da tela do dispositivo ou por quanto tempo ele mantém a tela ligada, você pode oferecer uma opção de orientação de navegação sem um mapa. Isso permite que o usuário final escolha essa opção para conservar energia. Por exemplo, se os motoristas trabalham regularmente no mesmo bairro, eles podem não precisar de orientação baseada em mapas com tanta frequência. A navegação sem um mapa pode ser ativada definindo um destino e iniciando a orientação no SDK Navigation, mas sem mostrar um mapa.

Adicione uma linha de código para ocultar o GMSMapView:

mapView.isHidden = true

O SDK Navigation vai continuar atualizando os locais fixados na estrada, o horário de chegada previsto e a distância restante da viagem, e seu app ainda poderá se inscrever em todos os eventos gerados pelo SDK à medida que o motorista avança. Isso não é adequado para todos os casos de uso e, é claro, não é um bom conselho em 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 da alternância de visualizações de mapa durante a navegação ativa.

App de demonstração em execução com a visualização de mapa visível.
Figura 1.App de demonstração do SDK Navigation para iOS mostrando a demonstração Data Back
App de demonstração em execução sem uma visualização de mapa visível.
Figura 2.App de demonstração em execução sem uma visualização de mapa visível. Observe que o tempo e a distância restantes, bem como o local fixado na estrada, ainda estão sendo atualizados.

Usar um estilo de mapa escuro

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

O SDK Navigation renderiza os mapas usando o SDK do Google Maps para iOS, que contém opções para estilizar qualquer visualização de mapa que não seja de navegação no seu 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 maneira devido a diferenças no tipo de tela, mas permite uma possível economia de energia em alguns casos. Um estudo recente descobriu que a quantidade de energia economizada pelo modo escuro em algumas telas depende do brilho inicial da tela. Por exemplo, o modo escuro economiza mais energia em telas definidas com brilho total do que em telas cujo brilho já está ajustado para 30 a 50% do máximo. Isso é importante considerar ao usar o modo escuro para seus apps, porque a economia de energia será relativa a 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 Navigation em execução em um iPhone 15 Pro com um estilo de mapa escuro.
Figura 3.SDK Navigation configurado com um estilo de mapa escuro
Configure seu GMSMapView com um mapID que representa um estilo de mapa baseado na nuvem definido no seu projeto.

A estilização de mapas baseada na nuvem exige um ID de mapa que represente uma configuração de mapa do lado do servidor criada no seu projeto do console do Google. Para mais informações sobre como criar um ID de mapa, consulte a documentação do desenvolvedor do ID de mapa. Para mais detalhes sobre como criar e implantar um estilo de mapa baseado na nuvem, consulte a documentação do desenvolvedor sobre como criar e gerenciar estilos de mapa baseados na nuvem.

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

Ao considerar o uso de energia das atualizações de localização enviadas do dispositivo, concentre-se mais na frequência das atualizações de localização do que na quantidade de dados enviados na transmissão.

Não é possível controlar isso diretamente no SDK Navigation . O mesmo conselho se aplica ao uso de fontes de localização que não sejam GPS (celular e Wi-Fi).

Educar os usuários

Os usuários do seu app podem querer saber como otimizar o consumo de energia. Para ajudar a reduzir o consumo de energia nos apps, aconselhe 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 resfriado
  • Conectar-se ao Wi-Fi do veículo, se disponível

Medir o consumo de energia

É possível usar ferramentas profissionais para medir o consumo de energia, mas geralmente é difícil ou caro obtê-las. Apps e ferramentas de criação de perfil de IDE, como o Power Profiler no Android Studio e o painel 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 para fins especiais e modificar a configuração da conexão da bateria. Produtos e serviços comerciais estão disponíveis para ajudar você a fazer isso. A modificação de dispositivos dessa maneira pode anular a garantia do dispositivo.