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 do Navigation. Ao mesmo tempo, ele descreve as compensações a serem consideradas ao empregar essas práticas. Especificamente, este documento abrange o seguinte:

  • Fontes de alto consumo de energia, classificadas do maior ao menor.
  • Estratégias para otimizar o consumo de energia, em ordem de importância, começando com o frame rate.
  • Estratégias de usuários finais para educar os usuários do seu app como gerenciar o uso de dispositivos 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 transportadoras de entrega podem trabalhar longas horas, fazendo atribuições em territórios desconhecidos. Nesses casos, elas dependem forte da orientação guiada no app. Isso resulta em alguns problemas comuns:

  • Despesa de bateria e disponibilidade de carregadores. O uso intenso da navegação pode fazer com que as baterias do dispositivo descarreguem mais rápido do que o esperado. Muitos usuários podem resolver isso carregando o dispositivo no veículo, mas os motoristas de duas rodas não podem.
  • Limitação do dispositivo devido ao calor. Até mesmo usuários que carregam o dispositivo continuamente podem ter problemas. O alto consumo de energia por longos períodos pode fazer o dispositivo aquecer, resultando na limitação térmica e na perda de desempenho.

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, é uma prática recomendada 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 compensações adequadas entre o desempenho e a 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 de 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 essa tela acesa por longas durações, isso também consome mais energia.

Até certo ponto, você pode esperar um alto consumo de energia de motoristas ou passageiros que contam com um mapa visível para navegar, especialmente se usarem o app continuamente por muitas horas. Nesse cenário, o app também executa uma taxa de renderização maior 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, duas outras atividades de navegação consomem energia do dispositivo:

  • Uso de torre de celular e GPS
  • Atualizações e compartilhamento de localização, como fornecer um HEC ou informar a posição de um veículo em uma frota.

A comunicação por rádio celular e GPS 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 as torres e estabelecer uma conexão. Por esses motivos, eles são essencialmente executados continuamente durante a navegação, mesmo que os rádios celulares permaneçam ativos por 20 a 30 segundos, em uma tentativa de minimizar os custos de inicialização. O sistema operacional controla essas configurações, que não podem ser definidas facilmente no app.

Nas atualizações de localização, o uso de energia varia de acordo com fatores imprevisíveis. Por exemplo, a distância entre o dispositivo e a estação de 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 que navega em uma área com conectividade ruim usará mais energia do que um que esteja próximo a uma estação de base. Além disso, alguns apps podem compartilhar atualizações de local com um serviço central de gerenciamento de frota e, portanto, precisarão 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 esses apps dependem muito de recursos que consomem muita energia, o que limita as opções para atenuar o impacto sem comprometer o uso da tela. Esta seção fornece uma lista de abordagens que podem ser adotadas ao otimizar seu app, da mais impactante para a menos impactante.

Mudar o frame rate

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

A desvantagem da redução do frame rate é que a renderização da tela pode parecer menos uniforme, principalmente quando o mapa é atualizado com frequência. Isso pode ser mais óbvio quando o mapa é ampliado para mostrar detalhes altos, quando o usuário está viajando em alta velocidade ou quando muda muito a velocidade ou a direção.

Em dispositivos iOS, o SDK do Maps para iOS expõe a propriedade preferredFrameRate 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 economizar bateria.

kGMSFrameRateConservative

Use uma taxa de quadros mediana para fornecer renderização mais suave e economizar ciclos de processamento.

kGMSFrameRateMaximum

Usar o frame rate máximo de um dispositivo.

Para dispositivos mais simples, isso é de 30 QPS, ou para dispositivos sofisticados, isso é de 60 QPS.

Para referência, consulte GMSFrameRate na documentação do SDK do Google Navigation 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 acesa, você pode 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 costumam trabalhar no mesmo bairro, talvez não precisem de orientações com base em mapas com tanta frequência. A navegação sem mapa pode ser ativada ao definir um destino e iniciar a orientação no SDK do Navigation, mas sem exibir um mapa.

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

mapView.isHidden = true

O SDK do Navigation vai continuar atualizando os locais ajustados, o HEC e a distância restante da viagem, e seu app ainda poderá se inscrever em todos os eventos gerados pelo SDK conforme o motorista prossegue. Isso não é adequado para todos os casos de uso e, obviamente, 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 mostram 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.SDK de Navegação App de demonstração para iOS mostrando a demonstração Voltar de dados
App de demonstração em execução sem a visualização de mapa.
Figura 2.App de demonstração em execução sem visualização de mapa. Observe que o tempo e a distância restantes, assim como a localização exata da via, ainda estão sendo atualizados.

Usar um estilo de mapa escuro

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

O SDK do Navigation renderiza mapas usando o SDK do Google Maps para iOS, que contém opções para estilizar visualizações de mapa que não sejam de navegação no seu app. A visualização de navegação também permite forçar o modo escuro. 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 para brilho máximo do que com telas em que o brilho já está ajustado para 30-50% do máximo. É importante considerar isso ao usar o modo escuro para seus apps, porque a economia de energia estará relacionada à 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 do Navigation em execução em um iPhone 15 Pro com um estilo de mapa escuro.
Figura 3.SDK de navegação 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 requer um ID de mapa que represente uma configuração 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. Para mais detalhes sobre como projetar 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 da localização 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 em vez da quantidade de dados enviados na transmissão.

Isso não é algo que pode ser controlado diretamente no SDK do Navigation. O mesmo conselho se aplica ao uso de fontes de localização que não sejam GPS (celular e Wi-Fi).

Instrua seus 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, oriente os usuários a fazer o seguinte:

  • Bloquear o smartphone
  • Colocar o app de navegação em segundo plano
  • Se possível, use a navegação sem um mapa
  • reduzir o brilho da tela usando o modo escuro para telas OLED e AMOLED ou ativando o brilho adaptável.
  • Mantenha o dispositivo resfriado
  • Conectar ao Wi-Fi do veículo, se disponível

Medir o consumo de energia

Você pode usar ferramentas de nível profissional para medir o consumo de energia, mas elas geralmente são difíceis ou caras. Apps e ferramentas de criação de perfil do ambiente de desenvolvimento integrado, como o Power Profiler no Android Studio e o painel "Battery Usage" no XCode Organizer, medem o consumo de energia, mas pode ser difícil remover o efeito dos processos em segundo plano ou definir um valor de referência de desempenho para medir. Em alguns casos, restrições do dispositivo podem impedir o acesso aos dados necessários.

Você pode usar hardware de monitoramento de energia para fins especiais e modificar a configuração de conexão da bateria. Há produtos e serviços comerciais para ajudar com isso. Observe que modificar os dispositivos dessa maneira pode anular a garantia do dispositivo.