18 votes

Comment puis-je savoir combien de batterie mon application Android consomme sur les appareils des utilisateurs ?

Je suis en train d'écrire une application pour évaluer la faisabilité d'un réseau Bluetooth P2P sur Android.

J'ai remarqué qu'avec un Galaxy Nexus, cela consomme très peu de batterie, tandis qu'avec un Nexus S, cela vide la batterie très rapidement. Cela est directement causé par une charge CPU élevée due au Bluetooth.

Maintenant, j'aimerais collecter des informations sur la quantité de batterie drainée par mon application sur les appareils sur lesquels elle est installée. Simplement enregistrer le temps par rapport au niveau de batterie est inutile car je ne sais pas quand l'appareil est en cours d'utilisation, et même si je le savais, je ne saurais pas si l'utilisateur est en train de jouer à des jeux en 3D tout en torrentant via le WiFi ou en train de lire un livre électronique sur un écran tamisé.

Pour aggraver le problème, toute la consommation de batterie causée par mon application n'est pas attribuée à celle-ci dans l'écran de la batterie - une partie est indiquée comme "Bluetooth", par exemple (encore une fois, cela dépend de l'appareil).

Existe-t-il un moyen simple, respectueux de la vie privée, d'obtenir des informations utiles sur des appareils non rootés? Les appareils ne sont pas sous mon contrôle. Je ne peux pas simplement aller vérifier dans le menu, je ne peux pas utiliser ADB.

1voto

Shade Points 3590

L'API Android ne prend pas en charge cela actuellement. La seule documentation disponible est celle décrivant comment utiliser les diffusions de BatteryManager, qui ne fournissent que le niveau de batterie global et aucun détail par application.

Je suppose que même s'il existe des moyens non documentés d'imiter ce que montre le gestionnaire de batterie des paramètres système, ils nécessiteraient un rootage.

1voto

Deepak Bala Points 5706

À ma connaissance, il n'existe aucun moyen de faire cela. La solution la plus proche que vous puissiez obtenir est de connecter l'appareil à un outil de surveillance comme little eye labs qui trace la consommation de batterie de votre application au fil du temps sur un graphique. Il prend également en charge le marquage des événements clés dans la durée de vie de l'application, comme l'activation du WIFI / bluetooth, etc.

Il n'y a pas de support pour faire cela à distance, mais vous pouvez obtenir les données sur vos propres appareils de test.

1voto

Graham Borland Points 27556

Cette approche est assez rudimentaire, mais elle peut aider. Vous pouvez utiliser les diffusions existantes du BatteryManager pour suivre les changements du niveau de batterie global pendant que votre application est active.

Savoir quand votre application est active est une question distincte. Si votre application se compose entièrement d'Activités, vous pouvez obtenir de bons résultats en commençant à suivre chaque fois que les méthodes onResume() de vos Activités sont appelées, et en arrêtant de suivre dans onPause(). Si vous pouvez avoir toutes vos Activités héritées d'une seule classe Activity de base, alors c'est assez facile. Voir Comment détecter quand une application Android passe en arrière-plan et revient au premier plan pour des suggestions sur la façon de suivre cela.

Si votre application est plus complexe, et que la partie intelligente se passe dans un composant plus long à exécuter comme un Service, alors c'est beaucoup plus difficile.

C'est rudimentaire, mais au moins cela vous aiderait à distinguer "jouer à des jeux en 3D" de "utiliser mon application".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X