programacion - Obtén el nivel de batería solo una vez con Android SDK
manual de android en pdf (1)
Esta pregunta ya tiene una respuesta aquí:
He buscado en la web y no pude encontrar la respuesta a mi pregunta. Mi problema es obtener la información del nivel de batería solo una vez, por ejemplo. llamando a la función getBatteryLevel()
. Solo hay soluciones que se implementan utilizando BroadcastReceiver
, pero como sé, se llamará cada vez que ocurra un evento de cambio de nivel de batería. Por favor, dime, ¿cómo puedo obtener esa información solo una vez?
La emisión de Intent.ACTION_BATTERY_CHANGED
es lo que se conoce como "emisión pegajosa". Debido a que esto no funciona, puede registrarse para la transmisión con un receptor nulo que solo obtendrá el nivel de la batería una vez cuando llame a registerReceiver
.
Una función para obtener el nivel de batería sin recibir actualizaciones se vería así:
public float getBatteryLevel() {
Intent batteryIntent = registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
int level = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = batteryIntent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
// Error checking that probably isn''t needed but I added just in case.
if(level == -1 || scale == -1) {
return 50.0f;
}
return ((float)level / (float)scale) * 100.0f;
}
Se pueden obtener más datos de esta transmisión pegajosa. Utilizando el batteryIntent
devuelto, puede acceder a otros extras como se describe en la clase BatteryManager
.