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
?
- Creación de una notificación en un momento determinado mediante el Administrador de alarmas
- ¿Por qué BroadcastReceiver funciona incluso cuando la aplicación está en segundo plano?
- El receptor de difusión de Android no funciona
- No se puede instanciar receptor: class no tiene cero argumento
- Administrador de alarmas programado no funciona Android
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.
- Enumeración usb Android
- Escaneado Wi-Fi sin receptor de difusión?
- Android: errores de difusión no ordenados con GCM
- ¿Hay acción de Pausa para el Administrador de descargas en Android?
- ¿Cómo enviar datos a través de PendingIntent a Broadcast?
- Transmitir datos de la clase BroadcastReceiver a una actividad de Android
- TabActivity Actividad infantil con BroadcastReceiver permanece viva en segundo plano
- Etiqueta Android NFC recibida con el receptor de difusión
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.
- Forma de recortar la imagen cuadrada de Android en la aplicación
- Cómo crear un mapa interactivo en Android