¿Cómo funciona la calibración de la batería?

Hay varias publicaciones sobre cómo calibrar las baterías de Android, pero ninguna describe su funcionamiento. ¿Cómo es que el sistema puede determinar a qué voltaje se considera que la batería está cargada (100 % o digamos 4200 mV) y qué voltaje se considera que está descargada (0 % o 3400 mV)?

"Android detiene la carga de la batería cuando llega al 100%", pero si está mal calibrado, ¿cómo es que no deja de cargar a otro voltaje (digamos 4100mV) o incluso continúa descargando a un voltaje por debajo de su funcionamiento normal (digamos 3200mV)?

Respuesta esperada:

  • La información técnica real sobre cómo Android determina el nivel actual de la batería

Edición 1: estoy enfatizando que mi pregunta no tiene nada que ver con las estadísticas de la batería y la cantidad de batería que han usado las aplicaciones, sino únicamente con el procedimiento involucrado en la determinación del% de la batería

Esta es mi primera pregunta, disculpe cualquier convención que me haya perdido.

No sé si esto responde a su pregunta, pero ¿Android no obtiene información sobre el nivel y el voltaje de la batería del kernel?
@aureljared lo haría si pudiera decir eso definitivamente junto con una referencia. Y si es así, sería genial si pudiera indicarme el proceso real para determinar el nivel de porcentaje de la batería a partir de las lecturas reales del hardware. ¡Gracias por adelantado!
Esta es una pregunta muy interesante. Para el nexus 5 (que tengo), aquí se proporciona un algoritmo para calibrar las lecturas de la batería: androidpit.com/… Sin embargo, lo que me desconcierta es que esto definitivamente parece un truco del código de firmware del sistema operativo/administrador de batería. ¿Alguien tiene referencias específicas en el código de Android (o tal vez un fragmento de firmware) que identifique por qué funciona esto? (Idealmente, el algoritmo sobre cómo determinar cuándo activar el "reinicio" de las estadísticas de la batería).

Respuestas (3)

Revisando el código fuente de Android recientemente (soy nuevo en la construcción de Android y todavía me estoy acostumbrando a lo que hace que Android funcione), encontré un archivo en algún lugar que tenía todo tipo de estadísticas y cifras de calibración.

Todas las cifras las establece el propio vendedor del dispositivo. Desde cuántos mAh tiene la batería, hasta qué valores afectan las diferentes características del dispositivo a la batería (como el escaneo WiFi, el brillo de la pantalla, etc.).

Asumiría que son estas cifras (del proveedor) las que utiliza el núcleo para ayudarse a sí mismo a calcular el nivel de la batería.

Además, las baterías vienen con pequeños chips en ellos en estos días, para proporcionar protección contra sobrecargas, etc. Es muy posible que el chip informe sobre su estado de salud al dispositivo. Pero eso es simplemente una suposición personal basada en el hecho de que no uso una batería estándar (uso una batería de cero limón en mi i9300 que triplica mi vida entre cargas), y mi teléfono sabe la diferencia (no se cae el mismo porcentaje en un tiempo dado respecto al stock).

¡¡Espero que esto ayude!!

¡Muy convincente y elegante! Pero solo para confirmar, técnicamente está diciendo que el sistema operativo combina su lectura de voltaje de hardware con valores preestablecidos establecidos por el proveedor (o leídos del chip de la batería) para determinar el porcentaje actual de la batería usando algún tipo o fórmula. ¡ Esto definitivamente requiere referencias o, para empezar, dónde encontró dicho archivo!

No tiene ningún efecto sobre la duración de la batería, pero simplemente restablece las estadísticas de consumo de la batería, es decir, observa los cambios de batería entre diferentes actividades...

Pero esto es lo que la ingeniera de Google Diane Hackborn publicó en su G+

"Este archivo [batterystats.bin] se utiliza para mantener, durante los reinicios, datos de bajo nivel sobre los tipos de operaciones que el dispositivo y sus aplicaciones realizan entre cambios de batería. Es decir, se utiliza únicamente para calcular la responsabilidad por el uso de la batería. se muestra en la interfaz de usuario "Uso de la batería" en la configuración. Es decir, tiene cosas profundamente significativas como "la aplicación X mantuvo un bloqueo de activación durante 2 minutos" y "la pantalla estuvo encendida al 60% de brillo durante 10 minutos". No tiene impacto en el nivel actual de la batería que se le muestra. No tiene ningún impacto en la duración de la batería".

Entendido (he leído su publicación anteriormente) batterystats.bin no es responsable de determinar el% de batería actual, pero ¿qué es y cómo funciona? -(aclaración: mi pregunta no tiene nada que ver con cómo se producen las estadísticas de batería por aplicación)
La calibración de la batería elimina este archivo, lo que obliga a Android a obtener estas estadísticas nuevamente. Recuerde que se le pedirá que calibre una vez que alcance el 100 por ciento, y se le pedirá que lo agote hasta el 0%. Las estadísticas se recopilan desde cero. De esa manera, tendrá una indicación adecuada de la batería (piense que las aplicaciones actualizadas pueden consumir menos batería). )
¡No entiendo! Si se eliminan las estadísticas, entonces, ¿cómo puedo confiar en que si lo cargo al 100%, en realidad es el límite superior de mi batería (dado que se eliminan las estadísticas, Android muestra una indicación falsa de mi batería!) Además, usted ¡Todavía no he dicho dónde está almacenando la nueva información! ¡Solo que batterystats.bin no lo hace! ¡Esperaba una explicación detallada de su funcionamiento! ¡Sé más técnico!
"BatteryManager transmite todos los detalles de la batería y la carga en un Intent fijo que incluye el estado de carga". La indicación de la batería no tiene nada que ver con batterystats.bin, el contenedor de estadísticas de la batería se usa solo para indicar el uso de la batería... Consulte aquí developer.android.com/training/monitoring-device-state/…
Agradezco su investigación y odio ser quisquilloso, pero después de leer el artículo descubrí que no está relacionado con la calibración de la batería y no responde exactamente a mi pregunta, específicamente dice "% de batería = nivel / escala (flotante)", pero ¿cómo? un dispositivo no calibrado obtiene la escala de la batería. Sin embargo, el artículo ha demostrado ser muy interesante y responde algunas otras preguntas. Pero nada relacionado con los detalles técnicos detrás de la calibración de la batería :(

Almacenado en el núcleo. Compilado usando valores conocidos para hardware específico. Flasheado a ROM. Lee el valor actual. Lo porcentualiza.

¡Brillante @jay! Tiene mucho sentido. ¡Esta era la respuesta que esperaba! Sin embargo, nuevamente carece de referencias de respaldo y tiene una ambigüedad general en su redacción. Edite, esta es potencialmente la respuesta aceptada gracias de antemano