Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Compatible con dispositivos sin batería

Esta página describe cómo Android maneja los productos que tienen baterías extraíbles o no tienen baterías internas. En cambio, estos últimos dispositivos están conectados a una fuente de alimentación externa, como una toma de corriente de CA o un puerto USB en otro dispositivo.

¿Hay batería?

Las aplicaciones pueden usar el siguiente código para detectar si el dispositivo tiene una batería actualmente presente:

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

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

Comportamiento del dispositivo sin batería

Si Android no detecta un dispositivo de batería para su producto, se utilizan los siguientes valores predeterminados relacionados con la batería. Tenga en cuenta que los valores predeterminados han cambiado en la versión de Android 9. Esta tabla muestra las diferencias.

Estado de la batería Android 9 y superior Android 8.1 y versiones anteriores
Regalo falso cierto
Estado desconocido cargando
Capacidad restante 0 100%
Salud desconocido bien
Estado en línea del cargador de CA no modificado forzado a la verdad

Los fabricantes pueden alterar la configuración predeterminada utilizando un kernel power_supply conductor o Salud HAL .

Android 9 y superior

Android 9 elimina un código anterior para dispositivos sin batería que, de manera predeterminada, pretendían que la batería estaba presente, se estaba cargando al 100% y estaba en buen estado con una lectura de temperatura normal en su termistor.

La mayoría de las API de marco que se ocupan de esta información continuará manejando situaciones comunes los mismos que anteriormente: se considera que el sistema se carga (es decir, no funciona con la energía de la batería), y no se considera que tienen una batería baja. Si la interfaz de usuario dibuja el icono de la batería, aparecerá con un signo de exclamación y el porcentaje de batería se mostrará como 0%. Pero el dispositivo no se apagará debido a que la batería está baja y se programarán trabajos que requieran carga o una buena batería.

Android 8.1 y versiones anteriores

Debido a que el estado de la batería es desconocido, las API de Android marco consideran que el sistema se carga (o, no funciona con la energía de la batería) y no se considera que tiene una batería baja. Si la interfaz de usuario muestra el icono de la batería, aparecerá con un signo de exclamación y el porcentaje de batería se mostrará como 0%. Pero el dispositivo no se apagará debido a que la batería está baja y se programarán trabajos que requieran carga o una buena batería.

Implementación

El código predeterminado de Android 9 puede funcionar correctamente para su dispositivo, pero se recomienda realizar un cambio de kernel o HAL para reflejar con precisión el estado de la energía y la batería de su producto, como se describe anteriormente. Si Android 9 y superior no detecta una fuente de alimentación de clase Linux dispositivo cargador y posteriormente, por defecto, todos los tipos de cargador (AC, USB, inalámbrico) tendrán estado fuera de línea. Si todos los cargadores están fuera de línea pero no se detecta ningún dispositivo de batería, se considerará que el sistema se está cargando en el sentido de que funciona con energía externa, no con batería, como se describió anteriormente.

Si el producto no tiene una batería y siempre está conectado a una fuente de energía, lo mejor es aplicar controlador cargador de clase power_supply un núcleo de Linux para el CA o fuente de alimentación USB que establece su línea sysfs atributo a true . O puede configurar la propiedad en línea del cargador de CA en un Health HAL para su dispositivo. Para ello implementar un HAL de la Salud como se describe en la Implementación de la Salud 2.0 .

Esta costumbre Salud HAL implementa una versión personalizada de Health::getHealthInfo() que modifica el valor de BatteryProperties.chargerAcOnline = true .

Para empezar, copiar el archivo hardware/interfaces/health/2.0/default/Health.cpp a su propia implementación de la Salud HAL y modificarlo de acuerdo con el 2.0 README Salud .