Suporte a dispositivos sem bateria

Esta página descreve como o Android lida com produtos que têm imagens removíveis sem pilhas ou sem baterias internas. Esses dispositivos são conectados uma fonte de energia externa, como uma tomada CA ou uma porta USB em outro dispositivo.

Há uma bateria?

O código a seguir pode ser usado por aplicativos para detectar se o dispositivo foi a presença de uma bateria:

```
final Intent batteryInfo = registerReceiver(null, new
IntentFilter(Intent.ACTION_BATTERY_CHANGED));

return batteryInfo.getBooleanExtra(BatteryManager.EXTRA_PRESENT, true);
```

Comportamento do dispositivo sem bateria

Se o Android não detectar um dispositivo de bateria para seu produto, então o seguinte os valores padrão relacionados à bateria são usados. Os padrões mudaram do Android 9. Esta tabela mostra as diferenças.

Estado da bateria Android 9 e versões mais recentes Android 8.1 e versões anteriores
Apresentar false verdadeiro
Status desconhecido carregando
Capacidade restante 0 100%
Clínica desconhecido bom
Status on-line do carregador de CA não modificado forçado como verdadeiro

Os fabricantes podem mudar as configurações padrão usando um kernel power_supply (em inglês) ou a HAL de saúde.

Android 9 e versões mais recentes

O Android 9 remove parte do código anterior para dispositivos sem bateria dispositivos que, por padrão, simulavam que havia uma bateria, estavam sendo carregados às 100% e estava em boa saúde com uma leitura normal de temperatura termistor.

A maioria das APIs de framework que lidam com essas informações continua lidando com situações iguais às de antes: o sistema é considerado carregando (ou seja, não funcionando com a energia da bateria) e não será considerado ficar com a bateria fraca. Se a interface do usuário mostrar o ícone de bateria, ele um ponto de exclamação aparece e a porcentagem da bateria é mostrada como 0%. Mas o dispositivo não desliga devido à bateria fraca e às tarefas que exigem para carregar ou se a bateria está em boas condições.

Android 8.1 e versões anteriores

Como o status da bateria é desconhecido, as APIs de framework do Android considerarão que o sistema esteja carregando (ou não funcione com a energia da bateria) e não seja a bateria é considerada fraca. Se a interface do usuário renderizar a bateria ele aparecerá com um ponto de exclamação, e a porcentagem da bateria será mostrado como 0%. Mas o dispositivo não desliga devido à bateria fraca e a tarefas que que exigem carregamento ou bateria de boa qualidade sejam programadas.

Implementação

O código padrão do Android 9 pode funcionar corretamente no seu dispositivo, mas é recomendável fazer uma mudança no kernel ou no HAL para refletir com precisão o estado de energia e bateria do produto, conforme descrito acima. Se o Android 9 e versões mais recentes não detectarem uma fonte de alimentação do Linux aula por padrão, todos os tipos de carregador (AC, USB, sem fio) terão status off-line. Se todos os carregadores estiverem off-line, mas não houver nenhum dispositivo de bateria detectado, o sistema ainda será considerado como sendo carregado, ou seja, ele está sendo executado em uma fonte externa, não de bateria, como descrito anteriormente.

Se o produto não tiver bateria e estiver sempre conectado a uma fonte de energia fonte, é melhor implementar uma classe Power_supply charger do kernel do Linux o driver da fonte de energia CA ou USB que define o atributo on-line sysfs. para true. Ou você pode configurar a propriedade on-line do carregador de AC em uma HAL de saúde para seu dispositivo. Para fazer isso, implemente uma HAL de saúde, conforme descrito em Como implementar Saúde 2.0.

Esta HAL de integridade personalizada implementa uma versão personalizada de Health::getHealthInfo() que modifica o valor de BatteryProperties.chargerAcOnline = true.

Para começar, copie o arquivo hardware/interfaces/health/2.0/default/Health.cpp à sua própria implementação de HAL do Health e modificá-la de acordo com a Health 2.0 LEIA-ME.