Esta página descreve como o Android lida com produtos que têm baterias removíveis ou não têm baterias internas. Os últimos são conectados a uma fonte de energia externa, como uma tomada CA ou 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 de dispositivos 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 alterar as configurações padrão usando um driver power_supply do kernel ou o HAL de integridade.
Android 9 e versões mais recentes
O Android 9 remove parte do código anterior para dispositivos sem bateria que, por padrão, fingiam que uma bateria estava presente, estava sendo carregada em 100% e apresentava boa integridade, com uma leitura normal de temperatura no termistor.
A maioria das APIs de framework que lidam com essas informações continuam a processar situações comuns da mesma forma que antes: o sistema é considerado em carregamento (ou seja, não está funcionando com a bateria) e não é considerado como tendo uma 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 para seus dispositivo, mas é recomendável fazer uma alteração no kernel ou na HAL reflitam com precisão a potência e o estado da bateria do produto, conforme descrito acima. Se o Android 9 e versões mais recentes não detectar um dispositivo carregador de classe de fonte de alimentação Linux (AC, USB, sem fio), por padrão, todos os tipos de carregador (AC, USB, sem fio) terão o status offlline. 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 ele está sendo executado com energia externa, não de bateria, conforme 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 alimentação CA ou USB que define o atributo on-line sysfs
.
para true
. Ou configure a propriedade on-line do carregador de CA em um 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.
Essa HAL personalizada de saúde 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.