¿Cómo puedo saber cuánta batería consume mi aplicación de Android en los dispositivos del usuario?
Estoy escribiendo una aplicación para evaluar la viabilidad de una red Bluetooth P2P en Android.
Me di cuenta de que en un Nexus Galaxy, que utiliza muy poca batería, mientras que en un Nexus S, drena la batería muy rápidamente. Esto es causado directamente por la alta carga de la CPU debido a Bluetooth.
- ¿Cómo gestiona la salud de la batería de sus dispositivos de desarrollo cuando siempre está conectado?
- Cómo desplazarse Meizu App Auto-Clean
- ACTION_BATTERY_CHANGED disparando como loco
- Almacenamiento de datos de Android - Archivo vs SQLite
- ¿Es OpenGL en Android un asesino de la batería?
Ahora, me gustaría recopilar información sobre cuánto drena la batería de mi aplicación en los dispositivos en los que está instalado. Simplemente registrar el tiempo frente al nivel de la batería es inútil, ya que no sé cuando el dispositivo está en uso, e incluso si he conectado que, no sabría si el usuario está jugando juegos en 3D mientras Torrenting WiFi o leer un libro electrónico en un 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 se enumeran como "Bluetooth", por ejemplo (de nuevo, depende del dispositivo).
¿Hay alguna manera fácil, que preserva la privacidad de obtener información útil sobre dispositivos no arraigados? Los dispositivos no están bajo mi control. No puedo simplemente ir a buscar en el menú, no puedo usar ADB.
- ¿No puedo recibir la emisión en el cambio de estado de la batería?
- En Android, ¿hay una manera de obtener la batería actual?
- Obtención de los valores de corriente de la batería para el teléfono Android
- Obtenga nivel y estado de la batería en Android
- BatteryManager de Android sólo devuelve 1
- ¿El proveedor de localización es realmente un drenaje de la batería?
- Determine la proximidad del teléfono Android al punto conocido mientras conserva la energía
- ¿Cómo quitar el icono de la batería en la barra de estado de android?
La API de Android no es compatible actualmente. La única documentación disponible es la que describe cómo usar las transmisiones de BatteryManager , que sólo 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 Configuración del sistema, se requeriría enraizamiento.
AFAIK no hay manera de hacer esto. Lo más cercano que puede llegar a hacer esto es conectar el dispositivo a una herramienta de monitoreo como pequeños laboratorios de ojos que no dibujar la batería consumida por su aplicación en el tiempo en un gráfico. También es compatible con marcar eventos clave en la vida de la aplicación, como activar 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 utilizar las transmisiones de BatteryManager existentes para realizar un seguimiento de los cambios en el nivel general de la batería mientras la aplicación esté activa .
Saber cuándo la aplicación está activa es un problema aparte. Si su aplicación consiste exclusivamente en Actividades, puede obtener buenos resultados comenzando a realizar un seguimiento cada vez que se llama a alguno de sus métodos onResume()
, y detenga el seguimiento en onPause()
. Si puedes tener todas tus actividades derivadas de una sola clase de actividad base, entonces esto es bastante fácil. Consulta Cómo detectar cuándo una aplicación de Android pasa al fondo y volver al primer plano para sugerencias sobre cómo realizar un seguimiento de esto.
Si tu aplicación es más compleja y las cosas inteligentes suceden en un componente de mayor duración como un servicio, es mucho más difícil.
Esto es crudo, pero al menos le ayudaría a distinguir "jugar juegos 3D" de "usar mi aplicación".
- ¿Cómo enviar una solicitud POST utilizando volley con cuerpo de cuerda?
- ¿Cómo puedo crear un AttributeSet de un style.xml?