Cuando los incendios de Android ACTION_BATTERY_LOW

En mi aplicación, quiero hacer algo cuando la batería está baja. Cuando la batería está baja, los incendios del androide ACTION_BATTERY_LOW y cuando la batería vuelve a alcanzar su buen estado de salud, dispara la intención ACTION_BATTERY_OKAY . Así pues, tengo tres preguntas con respecto a esto:

1.At ¿qué porcentaje de la batería androide realmente incendios ACTION_BATTERY_LOW ?

2. ¿Se dispara el mismo evento repetidamente si la batería se vuelve aún más baja?

3. ¿Podemos configurar el porcentaje de batería en el que android disparará ACTION_BATTERY_LOW intención?

Me preocupa más el tercer punto.

No, no se puede establecer cuando se enviará el umbral ACTION_BATTERY_LOW. Esa es una intención a nivel de sistema especificada por la ROM de Android. Aquí está el código donde establece el valor en el servicio de batería:

 mLowBatteryWarningLevel = mContext.getResources().getInteger( com.android.internal.R.integer.config_lowBatteryWarningLevel); 

Vea el siguiente código que se corta del código del sistema Android en el método de actualización del servicio de batería:

 /* The ACTION_BATTERY_LOW broadcast is sent in these situations: * - is just un-plugged (previously was plugged) and battery level is * less than or equal to WARNING, or * - is not plugged and battery level falls to WARNING boundary * (becomes <= mLowBatteryWarningLevel). */ final boolean sendBatteryLow = !plugged && mBatteryStatus != BatteryManager.BATTERY_STATUS_UNKNOWN && mBatteryLevel <= mLowBatteryWarningLevel && (oldPlugged || mLastBatteryLevel > mLowBatteryWarningLevel); sendIntent(); // Separate broadcast is sent for power connected / not connected // since the standard intent will not wake any applications and some // applications may want to have smart behavior based on this. Intent statusIntent = new Intent(); statusIntent.setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT); if (mPlugType != 0 && mLastPlugType == 0) { statusIntent.setAction(Intent.ACTION_POWER_CONNECTED); mContext.sendBroadcast(statusIntent); } else if (mPlugType == 0 && mLastPlugType != 0) { statusIntent.setAction(Intent.ACTION_POWER_DISCONNECTED); mContext.sendBroadcast(statusIntent); } if (sendBatteryLow) { mSentLowBatteryBroadcast = true; statusIntent.setAction(Intent.ACTION_BATTERY_LOW); mContext.sendBroadcast(statusIntent); 

Esa intención se dispara desde el BatteryService. Tendrás que analizar el código un poco, pero estoy bastante seguro de que no se dispara repetidamente:

 http://gitorious.org/android-eeepc/base/blobs/fda6fae156e31a287e3cfbf66e51ea1405cdf479/services/java/com/android/server/BatteryService.java 

Los valores reales que desencadena en se configuran en los recursos de Android, por lo que es configurable sólo durante una compilación del sistema. Esto es lo que tenemos para nuestro hardware, pero esto probablemente será diferente para cada plataforma de hardware en la que se ejecuta Android:

 <!-- Display low battery warning when battery level dips to this value --> <integer name="config_lowBatteryWarningLevel">15</integer> <!-- Close low battery warning when battery level reaches this value --> <integer name="config_lowBatteryCloseWarningLevel">20</integer> 

A menos que esté desarrollando una plataforma de hardware personalizada, no haría ninguna suposición sobre lo que estos valores están configurados.

  • Android pasa los datos de Actividad a BroadcastReceiver muestra null
  • BroadcastReceiver recibe varios mensajes idénticos para un evento
  • No se puede obtener el receptor cuando se desinstala la aplicación
  • Receptor de radiodifusión dentro de un servicio
  • La notificación no se elimina al hacer clic en el botón de acción incluso después de proporcionar el ID de notificación
  • BroadcastReceiver con múltiples filtros o BroadcastReceivers múltiples?
  • Registrar un Local BroadcastReceiver en AndroidManifest.xml?
  • Android: validar la identidad del remitente de la intención
  • Android: escucha el mensaje de difusión instalado / actualizado de la aplicación
  • Cómo corregir Advertencia de pelusa de SMS BroadcastReceiver sin protección
  • Cómo supervisar el cambio de estado de SIM
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.