O Google está comprometido em promover a equidade racial para as comunidades negras. Veja como.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

Suportando dispositivos sem bateria

Esta página descreve como o Android lida com produtos que possuem baterias removíveis ou sem baterias internas. Os últimos dispositivos são conectados a uma fonte de energia externa, como uma tomada de CA ou uma porta USB em outro dispositivo.

Há uma bateria presente?

O código a seguir pode ser usado por aplicativos para detectar se o dispositivo tem uma bateria presente no momento:

 ```
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 o seu produto, serão utilizados os seguintes valores padrão relacionados à bateria. Observe que os padrões foram alterados na versão do Android 9. Esta tabela mostra as diferenças.

Estado da bateria Android 9 e superior Android 8.1 e inferior
Presente falso verdade
Status desconhecido cobrando
Capacidade restante 0 0 100%
Saúde desconhecido Boa
Status online do carregador CA Não modificado forçado a verdade

Os fabricantes podem alterar as configurações padrão usando um driver kernel power_supply ou o Health HAL .

Android 9 e superior

O Android 9 remove um código anterior para dispositivos sem bateria que, por padrão, fingiam que uma bateria estava presente, estava sendo carregada a 100% e estava de boa saúde com uma leitura normal de temperatura em seu termistor.

A maioria das APIs de estrutura que lidam com essas informações continua a lidar com situações comuns da mesma forma que anteriormente: o sistema será considerado carregando (ou seja, não está funcionando com bateria) e não será considerado com pouca bateria. Se a interface do usuário desenhar o ícone da bateria, ele aparecerá com um ponto de exclamação e a porcentagem da bateria será mostrada como 0%. Mas o dispositivo não será desligado devido à bateria fraca, e os trabalhos que requerem carga ou bateria boa serão agendados.

Android 8.1 e inferior

Como o status da bateria é desconhecido, as APIs da estrutura do Android consideram que o sistema está carregando (ou não funciona com a energia da bateria) e não são consideradas como tendo pouca bateria. Se a interface do usuário renderizar o ícone da bateria, ele aparecerá com um ponto de exclamação e a porcentagem da bateria será mostrada como 0%. Mas o dispositivo não será desligado devido à bateria fraca, e os trabalhos que requerem carga ou bateria boa serão agendados.

Implementação

O código padrão do Android 9 pode funcionar corretamente para o seu dispositivo, mas é recomendável fazer uma alteração no kernel ou no HAL para refletir com precisão o estado de energia e bateria do seu produto, conforme descrito acima. Se o Android 9 e superior não detectar um dispositivo carregador de classe de fonte de alimentação Linux , por padrão, todos os tipos de carregadores (CA, USB, Sem fio) terão status offline . Se todos os carregadores estiverem offline, mas não houver um dispositivo de bateria detectado, o sistema continuará sendo carregado no sentido de que está sendo executado com energia externa, e não com bateria, conforme descrito anteriormente.

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

Este Health HAL personalizado 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 para sua própria implementação do Health HAL e modifique-o de acordo com o README do Health 2.0 .