A tela de relógio do Wear OS é executada de forma contínua e, portanto, precisa usar energia de modo eficiente.
Otimize a performance do mostrador do relógio o máximo possível. Esta página oferece práticas recomendadas para otimizações gerais de mostradores de relógio, bem como de animações e imagens.
Otimização básica
Esta seção contém práticas recomendadas para melhorar a eficiência geral do mostrador do relógio.
Cor e brilho do mostrador do relógio
O uso de cores escuras no mostrador de relógio consome menos energia do relógio do usuário. Confira a seguir recomendações para configurar o plano de fundo do mostrador do relógio e otimizar o uso da bateria:
- Cor: sempre que possível, use um plano de fundo preto.
- Brilho: quando não é possível usar um plano de fundo preto,
mantenha o brilho da
cor de fundo em 25% ou menos
em uma escala de matiz, saturação e valor (HSV, na sigla em inglês) ou de matiz, saturação e brilho (HSB, na sigla em inglês). Por exemplo,
se você usar a classe
Color
para configurar uma cor de plano de fundo definida com a escala HSV, use 25 ou menos para a configuração de valor, que controla o brilho.
Usar recursos dinâmicos para interagir com o smartphone
Quando um mostrador do relógio exigir uma operação no smartphone, execute o código somente quando o mostrador estiver ativo. O método recomendado para permitir que o app no smartphone saiba que o mostrador do relógio correspondente está ativo é a API CapabilityClient.
Monitorar o consumo de energia
O app Wear OS complementar permite que os desenvolvedores e usuários vejam a quantidade de bateria consumida por diferentes processos no dispositivo wearable. Para isso, acesse Configurações > Bateria do relógio.
Registrar mostradores de relógio com reconhecimento de criptografia
O Android 7.0 e versões mais recentes tem suporte para criptografia baseada em arquivo e permite que aplicativos com reconhecimento de criptografia sejam executados antes de o usuário informar a senha de descriptografia durante a inicialização. Isso pode diminuir o tempo de mudança da animação de inicialização para o mostrador do relógio em até 30 segundos.
Para agilizar a inicialização, adicione android:directBootAware="true"
ao
manifesto do mostrador do relógio.
Observação: use esse recurso com mostradores de relógio que não utilizam armazenamento criptografado por credencial.
Práticas recomendadas para animações
As práticas recomendadas nesta seção ajudam a reduzir o consumo de energia associado às animações.
Reduzir a frame rate das animações
No geral, as animações usam recursos computacionais dispendiosos e consomem uma quantidade significativa de energia. A maioria delas apresenta fluidez a 30 quadros por segundo, então evite a execução com uma taxa de quadros maior. Em vez disso, você pode usar taxas de quadros dinâmicas. Para mais informações, consulte o exemplo de mostrador do relógio (link em inglês).
Colocar a CPU no modo de suspensão entre as animações
Para maximizar a duração da bateria, use animações com moderação. Até um ponto piscando consome energia da bateria a cada piscada.
As animações e pequenas mudanças no conteúdo do mostrador do relógio ativam a CPU. Faça a CPU entrar no modo de suspensão entre as animações usando, por exemplo, bursts breves de animação a cada segundo no modo interativo e deixando a CPU em suspensão no segundo seguinte. Colocar a CPU em suspensão com frequência, mesmo que por breves instantes, pode reduzir significativamente o consumo de energia.
Práticas recomendadas para imagens
As práticas recomendadas nesta seção ajudam a reduzir o consumo de energia associado às imagens.
Reduzir o tamanho dos recursos de bitmap
Muitos mostradores de relógio consistem em uma imagem de fundo e outros recursos gráficos que são
transformados e sobrepostos à imagem de fundo, como os ponteiros do relógio e outros elementos
que se movem com o tempo. Quanto maiores esses recursos gráficos, mais recursos computacionais dispendiosos serão necessários
para fazer a transformação deles. Normalmente, esses elementos gráficos são girados e às vezes redimensionados dentro do método
Render.CanvasRenderer.render()
toda vez que o sistema redesenha o mostrador do relógio,
conforme descrito em Desenhar um mostrador de relógio.
![](https://developer.android.com/static/training/wearables/watch-faces/images/ClockHandFull.png?authuser=3&hl=pt-br)
![](https://developer.android.com/static/training/wearables/watch-faces/images/ClockHandCropped.png?authuser=3&hl=pt-br)
Figura 1. Corte os ponteiros do relógio para remover os pixels extras.
A redução do tamanho dos recursos de bitmap melhora a performance das animações e economiza energia. Siga estas dicas para melhorar a performance do mostrador do relógio:
- Não use elementos gráficos maiores do que o necessário.
- Remova pixels extras transparentes ao redor das bordas.
Por exemplo, o tamanho da imagem do ponteiro do relógio à esquerda na figura 1 pode ser reduzido em 97% removendo os pixels extras transparentes, conforme mostrado no lado direito da figura.
Combinar recursos de bitmap
Se você tem bitmaps que geralmente são desenhados juntos, combine-os em um único recurso gráfico. Por exemplo, muitas vezes, é possível combinar a imagem de fundo no modo interativo com as marcações para não ter que desenhar dois bitmaps de tela cheia sempre que o sistema redesenhar o mostrador do relógio.
Desativar a suavização ao desenhar bitmaps dimensionados
Ao desenhar um bitmap dimensionado no objeto
Canvas
usando o método
Canvas.drawBitmap()
, você pode informar uma instância de
Paint
para configurar
várias opções. A suavização usando o método
setAntiAlias()
não afeta os bitmaps, então ela pode ser desativada para melhorar a performance.
![](https://developer.android.com/static/training/wearables/watch-faces/images/BitmapFilterDisabled.png?authuser=3&hl=pt-br)
![](https://developer.android.com/static/training/wearables/watch-faces/images/BitmapFilterEnabled.png?authuser=3&hl=pt-br)
Figura 2. Exemplo de filtro de bitmap desativado (à esquerda) e ativado (à direita).
Usar filtragem de bitmap
Para recursos de bitmap que você desenha sobre outros elementos, ative a filtragem na mesma instância de
Paint
usando o
método setFilterBitmap()
. A Figura 2 mostra uma visualização ampliada de um ponteiro de relógio com
e sem filtragem de bitmap.
Observação: quando estiver no modo ambiente, desative a filtragem de bitmap. No modo ambiente com poucos bits, o sistema não renderiza corretamente as cores na imagem, o que impede a filtragem de bitmap.
Eliminar operações dispendiosas do método de desenho
O sistema chama o método Render.CanvasRenderer.render()
sempre que redesenha o mostrador do relógio. Para melhorar a performance, inclua apenas
operações nesse método que sejam estritamente necessárias para atualizar o mostrador do relógio.
Quando possível, evite realizar as seguintes operações
no método Render.CanvasRenderer.render()
:
- Carregar imagens e outros recursos
- Redimensionar imagens
- Alocar objetos
- Fazer cálculos cujos resultados não mudam entre os quadros
Para analisar a performance do mostrador do relógio, use o CPU Profiler. Especificamente,
garanta que o tempo para executar a implementação do Render.CanvasRenderer.render()
seja curto e
consistente em todas as invocações. Para mais informações, consulte
Inspecionar atividades de CPU com o CPU Profiler.
Recursos relacionados
O app de exemplo de mostrador do relógio (link em inglês) demonstra as práticas recomendadas para configurar um mostrador.