android - samsung - porque se gasta rapido la bateria de mi celular
¿Cómo puedo saber cuánta batería consume mi aplicación de Android en los dispositivos de los usuarios? (3)
Estoy escribiendo una aplicación para evaluar la viabilidad de una red Bluetooth P2P en Android.
Noté que en un Galaxy Nexus, usa muy poca batería, mientras que en un Nexus S, consume la batería muy rápidamente. Esto es causado directamente por una alta carga de CPU debido a Bluetooth.
Ahora, me gustaría recopilar información sobre la cantidad de batería que consume la aplicación en los dispositivos en los que está instalada. El simple hecho de registrar el tiempo frente al nivel de la batería es inútil, ya que no sé cuándo está en uso el dispositivo, e incluso si lo hiciera, no sabría si el usuario está jugando juegos en 3D mientras se ejecuta Torrent a través de WiFi o lee un libro electrónico pantalla atenuada.
Para empeorar el problema, no todo el uso de la batería causado por mi aplicación se le atribuye en la pantalla de la batería; algunos aparecen como "Bluetooth", por ejemplo (de nuevo, depende del dispositivo).
¿Existe alguna forma fácil y que permita preservar la privacidad para obtener información útil sobre dispositivos no rooteados? Los dispositivos no están bajo mi control. No puedo simplemente mirar en el menú, no puedo usar ADB.
AFAIK no hay manera de hacer esto. Lo más cerca que puede llegar a hacer esto es conectar el dispositivo a una herramienta de monitoreo como los pequeños laboratorios de ojos que, en el tiempo, consumen la batería consumida por su aplicación en un gráfico. También es compatible con la marcación de eventos clave en la vida útil de la aplicación, como encender WIFI / bluetooth, etc.
No hay soporte para hacer esto de forma remota, pero puede obtener los datos en sus propios dispositivos de prueba.
Este enfoque es bastante crudo, pero puede ayudar. Puede usar las transmisiones existentes de BatteryManager para realizar un seguimiento de los cambios en el nivel general de la batería mientras su aplicación está activa .
Saber cuándo está activa tu aplicación es un tema aparte. Si su aplicación consta completamente de Actividades, puede obtener buenos resultados al comenzar a rastrear cada vez que se onResume()
alguno de los métodos onResume()
de sus Actividades y detener el seguimiento en onPause()
. Si puede hacer que todas sus actividades se deriven de una clase de actividad base única, entonces esto es bastante fácil. Vea Cómo detectar cuándo una aplicación de Android pasa al fondo y vuelva al primer plano para obtener sugerencias sobre cómo realizar un seguimiento de esto.
Si su aplicación es más compleja y las cosas inteligentes ocurren en un componente de mayor duración como un Servicio, entonces es mucho más difícil.
Esto es burdo, pero al menos te ayudaría a distinguir "jugar juegos 3D" de "usar mi aplicación".
La API de Android no es compatible con esto actualmente. La única documentación disponible es la que describe cómo usar las transmisiones de BatteryManager , que solo proporcionan el nivel general de la batería y no hay detalles por aplicación.
Supongo que incluso si hay formas indocumentadas de emular lo que muestra el administrador de la batería de la Configuración del sistema, se necesitaría rootear.