Google si impegna a promuovere l'equità razziale per le comunità nere. Vedi come.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Supporto di dispositivi senza batteria

Questa pagina descrive come Android gestisce i prodotti che dispongono di batterie rimovibili o senza batterie interne. Questi ultimi dispositivi sono invece collegati a una fonte di alimentazione esterna, come una presa di corrente CA o una porta USB su un altro dispositivo.

È presente una batteria?

Il seguente codice può essere utilizzato dalle applicazioni per rilevare se il dispositivo ha attualmente una batteria:

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

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

Comportamento del dispositivo senza batteria

Se Android non rileva un dispositivo batteria per il tuo prodotto, vengono utilizzati i seguenti valori predefiniti relativi alla batteria. Nota che le impostazioni predefinite sono cambiate nella versione di Android 9. Questa tabella mostra le differenze.

Stato della batteria Android 9 e versioni successive Android 8.1 e versioni precedenti
Presente falso vero
Stato sconosciuto ricarica
Capacità rimanente 0 100%
Salute sconosciuto bene
Stato online del caricabatterie CA. non modificato costretto a vero

I produttori possono modificare le impostazioni predefinite usando un driver power_supply del kernel o Health HAL .

Android 9 e versioni successive

Android 9 rimuove alcuni codici precedenti per i dispositivi senza batteria che per impostazione predefinita fingevano che fosse presente una batteria, che era carica al 100% ed era in buona salute con una normale lettura della temperatura sul suo termistore.

La maggior parte delle API del framework che trattano queste informazioni continuano a gestire le situazioni comuni come in precedenza: il sistema verrà considerato in carica (ovvero, non alimentato a batteria) e non verrà considerato con una batteria scarica. Se l'interfaccia utente disegna l'icona della batteria, verrà visualizzata con un punto esclamativo e la percentuale della batteria verrà visualizzata come 0%. Tuttavia, il dispositivo non si spegne a causa della batteria scarica e verranno programmati i lavori che richiedono una ricarica o una buona batteria.

Android 8.1 e versioni precedenti

Poiché lo stato della batteria è sconosciuto, le API del framework Android considereranno il sistema in carica (o, non funzionante a batteria) e non saranno considerate con batteria scarica. Se l'interfaccia utente visualizza l'icona della batteria, verrà visualizzata con un punto esclamativo e la percentuale della batteria verrà visualizzata come 0%. Tuttavia, il dispositivo non si spegne a causa della batteria scarica e verranno programmati i lavori che richiedono una ricarica o una buona batteria.

Implementazione

Il codice predefinito di Android 9 potrebbe funzionare correttamente per il tuo dispositivo, ma si consiglia di apportare una modifica al kernel o HAL per riflettere accuratamente lo stato di alimentazione e della batteria del prodotto, come descritto sopra. Se Android 9 e versioni successive non rilevano un dispositivo caricabatterie della classe di alimentazione Linux , per impostazione predefinita tutti i tipi di caricabatterie (CA, USB, Wireless) avranno lo stato offline . Se tutti i caricabatterie sono offline ma non viene rilevato alcun dispositivo a batteria, il sistema verrà comunque considerato in carica, nel senso che funziona a batteria esterna, non a batteria, come descritto in precedenza.

Se il tuo prodotto non ha una batteria ed è sempre collegato a una fonte di alimentazione, è meglio implementare un driver caricabatterie classe kernel power_supply del kernel Linux per la fonte di alimentazione CA o USB che imposta il suo attributo sysfs online su true . In alternativa, è possibile configurare la proprietà online del caricabatterie CA in un HAL sanitario per il dispositivo. Per fare ciò, implementare un Health HAL come descritto in Implementing Health 2.0 .

Questo HAL di salute personalizzato implementa una versione personalizzata di Health::getHealthInfo() che modifica il valore di BatteryProperties.chargerAcOnline = true .

Per iniziare, copia il file hardware/interfaces/health/2.0/default/Health.cpp nella tua implementazione Health HAL e modificalo secondo il README Health 2.0 .