5 votos

¿Dónde se encuentran los archivos de capacidad de la batería?

Antecedentes

Mi actual dispositivo Huawei Honor 6 viene con una batería de 3100 mAh. Por lo tanto, me sorprendió ver 3C Toolbox Pro informan de que la capacidad es de 4000 mAh.

Envié un correo al desarrollador de la aplicación y su respuesta fue la siguiente

En Android, uno puede obtener la capacidad de la batería codificada en stock desde los perfiles de la batería, una API oculta en Android. Esta es una de las dos fuentes que utiliza la aplicación.

La otra fuente está en el núcleo, normalmente en /sys/devices/power_supply/battery/charge_full_design

( Para conocer la ruta en su dispositivo, desde 3C Toolbox, pulse solicitar apoyo de Ayuda y apoyo menú. Se generará un correo electrónico para el desarrollador con información sobre su dispositivo, incluyendo battery_info.txt . Este archivo, entre otras cosas, especifica la ruta de la segunda fuente )

Por lo tanto, la capacidad de la batería y el estado de la misma en porcentaje depende de de cuál de estas dos fuentes se está leyendo y las dos fuentes podrían tener valores diferentes (En mi caso, fue la ROM de stock enviada con capacidad equivocada en los perfiles de la batería)

Esta explicación encaja bien con que la capacidad de la batería sea reportado de manera diferente por las aplicaciones como también lecturas de la batería no coinciden con el uso de una batería extendida ( Nota: Estas dos preguntas son de la cosecha del '14 y en base a la ubicación de los archivos de la batería como se ha mencionado, he respondido)

Pregunta

He estado rastreando la red, varios foros, desarrolladores de Android, etc para conseguir una fuente autorizada para esto en lugar de una comunicación por correo. Esto me ayudaría a entender mejor y también responder a tales preguntas con una buena referencia

¿Puede alguien indicar una fuente autorizada que apoye u ofrezca una explicación alternativa?

Editar: Estoy buscando información genérica, no específica para mi dispositivo

3voto

DanielAW Puntos 86

Creo que la respuesta en el correo electrónico es legítima, he aquí por qué:

Toda la información siguiente se basa en el Google Nexus 5, pero el procedimiento general debería aplicarse a todos los teléfonos Android.

El correo describe dos posibles fuentes para que un desarrollador de aplicaciones obtenga la información sobre el nivel de carga de la batería a plena capacidad:

  1. Lectura de la sysfs en el sistema de archivos de Android ( /sys/devices/power_supply/battery/charge_full_design ).
  2. Utilizando la API privada de Android. Privado en este caso significa que sólo las aplicaciones del sistema (de Google) tienen acceso a esta información. Pero un desarrollador de aplicaciones puede utilizar algunos trucos (descritos aquí ) para acceder también a esta información.

Ambos métodos tienen su propia fuente para el valor de "carga a plena capacidad".

1.: En el Nexus 5 este archivo lo crea el driver encargado de manejar el chip (Maxim MAX17048) que mide la capacidad restante de la batería. El código fuente de este controlador se puede encontrar aquí . El controlador utiliza archivos adicionales para obtener información específica del dispositivo. Esta información es fija y suele proporcionarla el fabricante del smartphone. El sitio web archivo utilizado para el controlador en el Nexus 5 también contiene un valor llamado fcc-mah . Obtendrá el contenido de este valor si lee del /sys/devices/power_supply/battery/charge_full_design en el Nexus 5.

2.: Otra forma es la que proporciona la API privada de Android. Esta API utiliza perfiles de potencia para saber cuánta energía consume aproximadamente cada componente. La documentación de Google dice:

Los fabricantes de dispositivos deben proporcionar un perfil de potencia del componente que defina el valor de consumo de corriente del componente y el drenaje aproximado de la batería causado por el componente a lo largo del tiempo. Este perfil se define en platform/frameworks/base/core/res/res/xml/power_profile.xml. Para obtener orientación sobre estos ajustes, consulte Valores de energía.

El power_profile.xml también contiene un valor llamado battery.capacity que se puede leer a través de la API. Este valor también contiene la capacidad máxima de la batería.

Para obtener el power_profile.xml para su dispositivo, haga lo siguiente:

  • Utilice ADB para obtener el framework-res.apk: adb pull /system/framework/framework-res.apk
  • Siga estos para obtener una versión legible de power_profile.xml
  • La ruta del archivo extraído es: framework-res/res/xml/power_profile.xml

Así que dependiendo de cómo un desarrollador elija obtener el valor de "carga a plena capacidad", puede obtener diferentes resultados. Especialmente cuando vea el archivo del conductor para el Huawei Honor 6, se puede ver que hay diferentes valores dependiendo del tipo de batería utilizada.

Se podría suponer que un fabricante perezoso no actualiza los archivos del controlador o el perfil de energía de forma adecuada para la batería utilizada, lo que a su vez provoca los diferentes valores.

Desde el punto de vista de los desarrolladores, el segundo método es más atractivo y fácil de aplicar (de nuevo, véase esta respuesta ). El primer método necesita acceso al sistema de archivos de Android y privilegios de Root.

0 votos

He actualizado mi respuesta. Creo que necesitas conseguir tu power_profile.xml para más información

0 votos

Vale, intentaré reformular mi respuesta. A tus comentarios: a) Como he dicho, intentaré reformular mi respuesta, pero creo que en algún momento tienes que confiar en mí :-) b) Está bien c) Debería ser factible d) Escribí "creo" porque es difícil saber exactamente cómo lo hicieron, podría haber diferentes maneras. Describo una posibilidad (muy probable) e) reformular mi respuesta debería ayudar a aclarar eso :-)

0 votos

¿puedes unirte a mí? aquí

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X