5 votes

Où se trouvent les fichiers de capacité de la batterie ?

Contexte

Mon appareil actuel Huawei Honor 6 est équipé d'une batterie de 3100 mAh. J'ai donc été surpris de voir 3C Toolbox Pro rapporter une capacité de 4000 mAh.

J'ai envoyé un mail au développeur de l'application et sa réponse était sur ces lignes

Sous Android, on peut obtenir la capacité de batterie codée en dur à partir des profils de batterie, une API cachée dans Android. C'est l'une des 2 sources utilisées par l'application.

L'autre source se trouve dans le noyau, généralement sous /sys/devices/power_supply/battery/charge_full_design

( Pour connaître le chemin sur votre appareil, depuis 3C Toolbox, appuyez sur demander du support dans le menu Aide et support. Un e-mail sera généré au développeur contenant des informations sur votre appareil, y compris battery_info.txt. Ce fichier spécifie notamment le chemin de la deuxième source )

Ainsi, la capacité de la batterie et l'état de la batterie, tels qu'ils sont rapportés en pourcentage, dépendent de la source à partir de laquelle elles sont lues et les deux sources pourraient contenir des valeurs différentes (Dans mon cas, c'était la ROM stockée avec une capacité incorrecte dans les profils de batterie)

Cette explication correspond bien à la capacité de la batterie étant rapportée différemment par des applications ainsi que des lectures de batterie incompatibles en utilisant une batterie étendue (Remarque: Ces deux questions datent de '14 et basées sur l'emplacement des fichiers de batterie comme mentionné, j'ai répondu)

Question

J'ai cherché sur internet, divers forums, les développeurs Android, etc. pour obtenir une source fiable plutôt qu'une communication par e-mail. Cela m'aiderait à mieux comprendre et également répondre à de telles questions avec une bonne référence

Quelqu'un peut-il indiquer une source fiable qui soutient ou propose une explication alternative ?

Édition: Je recherche des informations générales, pas spécifiques à mon appareil

3voto

OliviervdAkker Points 55

Je pense que la réponse dans l'e-mail est légitime, voici pourquoi :

Toutes les informations suivantes sont basées sur le Google Nexus 5, mais la procédure générale devrait s'appliquer à tous les téléphones Android.

Le mail décrit deux sources possibles pour qu'un développeur d'application obtienne des informations sur le niveau de charge de la batterie à pleine capacité :

  1. Lecture du fichier sysfs dans le système de fichiers Android (/sys/devices/power_supply/battery/charge_full_design).
  2. Utilisation de l'API privée Android. Privée dans ce cas signifie que seules les applications système (de Google) ont accès à ces informations. Mais un développeur d'application peut utiliser quelques astuces (décrites ici) pour obtenir également accès à ces informations.

Les deux méthodes ont leur propre source pour la valeur de "charge à pleine capacité".

1 : Sur le Nexus 5, ce fichier est créé par le pilote responsable de la gestion de la puce (Maxim MAX17048) qui mesure la capacité restante de la batterie. Le code source de ce pilote peut être trouvé ici. Le pilote utilise des fichiers supplémentaires pour obtenir des informations spécifiques au périphérique. Ces informations sont fixes et généralement fournies par le fabricant de smartphone. Le fichier utilisé pour le pilote dans le Nexus 5 contient également une valeur appelée fcc-mah. Vous obtiendrez le contenu de cette valeur si vous lisez à partir du fichier /sys/devices/power_supply/battery/charge_full_design dans le Nexus 5.

2 : Une autre manière est fournie par l'API privée Android. Cette API utilise des profils de puissance pour connaître la quantité d'énergie que chaque composant consomme approximativement. La documentation Google dit :

Les fabricants de périphériques doivent fournir un profil de puissance du composant qui définit la valeur de consommation de courant pour le composant et la quantité approximative de décharge de la batterie causée par le composant au fil du temps. Ce profil est défini dans platform/frameworks/base/core/res/res/xml/power_profile.xml. Pour des instructions sur ces paramètres, consultez les valeurs de puissance.

Le power_profile.xml contient également une valeur appelée battery.capacity qui peut être lue via l'API. Cette valeur contient également la capacité maximale de la batterie.

Pour obtenir le power_profile.xml pour votre appareil, procédez comme suit :

  • Utilisez ADB pour obtenir le framework-res.apk : adb pull /system/framework/framework-res.apk
  • Suivez ces instructions pour obtenir une version lisible de power_profile.xml
  • Chemin du fichier extrait : framework-res/res/xml/power_profile.xml

Ainsi, en fonction de la manière dont un développeur choisit d'obtenir la valeur de "charge à pleine capacité", il peut obtenir des résultats différents. Surtout lorsque je regarde le fichier du pilote pour le Huawei Honor 6, on peut voir qu'il existe des valeurs différentes en fonction du type de batterie utilisé.

On pourrait supposer qu'un fabricant peu scrupuleux ne met pas à jour les fichiers dans le pilote ou le profil de puissance de manière appropriée pour la batterie utilisée, ce qui entraîne des valeurs différentes.

Du point de vue d'un développeur, la deuxième méthode est plus attrayante et plus facile à implémenter (voir encore une fois cette réponse). La première méthode nécessite l'accès au système de fichiers Android et des privilèges root.

0 votes

J'ai mis à jour ma réponse. Je pense que vous devez obtenir votre power_profile.xml pour plus d'informations.

0 votes

D'accord, je vais essayer de reformuler ma réponse. Concernant vos commentaires : a) Comme je l'ai dit, je vais essayer de reformuler ma réponse mais je pense qu'à un moment donné, vous devez un peu me faire confiance :-) b) C'est d'accord c) Cela devrait être faisable d) J'ai écrit "pense" parce qu'il est difficile de savoir exactement comment ils l'ont fait, il pourrait y avoir différentes façons. Je décris une (très probable) possibilité e) reformuler ma réponse devrait aider à clarifier cela :-)

0 votes

Pouvez-vous s'il vous plaît me rejoindre ici

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X