Esta página descreve como o Android lida com produtos que possuem baterias removíveis ou que não possuem baterias internas. Em vez disso, os últimos dispositivos são conectados a uma fonte de alimentação externa, como uma tomada CA ou porta USB de outro dispositivo.
Há uma bateria presente?
O código a seguir pode ser usado por aplicativos para detectar se o dispositivo tem bateria presente:
```
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 usados 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 | verdadeiro |
Status | desconhecido | carregando |
Capacidade restante | 0 | 100% |
Saúde | desconhecido | bom |
Status on-line do carregador CA | Não modificado | forçado a verdade |
Os fabricantes podem alterar as configurações padrão usando um driver power_supply do kernel ou Health HAL .
Android 9 e superior
O Android 9 remove alguns códigos anteriores para dispositivos sem bateria que, por padrão, fingiam que uma bateria estava presente, estava sendo carregada a 100% e estava em boas condições com uma leitura normal de temperatura em seu termistor.
A maioria das APIs de estrutura que lidam com essas informações continuam a lidar com situações comuns da mesma forma que anteriormente: considera-se que o sistema está carregando (ou seja, não está funcionando com bateria) e não será considerado como tendo bateria fraca. 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 desliga devido à bateria fraca e trabalhos que exigem carregamento ou bateria boa são agendados.
Android 8.1 e inferior
Como o status da bateria é desconhecido, as APIs da estrutura do Android considerarão que o sistema está carregando (ou não funcionando com bateria) e não será considerado como tendo bateria fraca. Se a interface do usuário exibir 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 desliga devido à bateria fraca e trabalhos que exigem carregamento ou bateria boa sã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 a energia e o estado da 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 carregador (CA, USB, sem fio) terão status offline . Se todos os carregadores estiverem off-line, mas nenhum dispositivo de bateria for detectado, o sistema ainda será considerado em carregamento, no sentido de que está funcionando com energia externa e não com energia da bateria, conforme descrito anteriormente.
Se o seu produto não tiver bateria e estiver sempre conectado a uma fonte de alimentação, é melhor implementar um driver de carregador de classe power_supply do kernel Linux para a fonte de alimentação CA ou USB que defina seu atributo sysfs
online como true
. Ou você pode configurar a propriedade on-line do carregador CA em um Health HAL para o seu dispositivo. Para fazer isso, implemente um Health HAL conforme descrito em Implementando Health 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 .