Проблема
Вы хотите определить уровень заряда аккумулятора на устройстве Android, чтобы можно было уведомить пользователя, когда уровень заряда батареи станет ниже определенного порога, что позволяет избежать неожиданных сюрпризов.
Решение
Широковещательный приемник, который принимает широковещательное сообщение, отправленное при изменении состояния батареи, может идентифицировать уровень заряда батареи и выдавать оповещения пользователям.
Обсуждение
Иногда нам нужно показывать предупреждение пользователю, когда уровень заряда аккумулятора устройства Android становится ниже определенного предела. Код в примере 1 устанавливает широковещательное сообщение, которое должно быть отправлено, когда уровень заряда батареи изменяется, и создает широковещательный приемник для приема широковещательного сообщения, который может предупреждать пользователя, когда аккумулятор разряжается ниже определенного уровня.
Пример 1. Класс MainActivity
public class MainActivity extends Activity {
/** Вызывается при первом создании активности. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/** Регистрирует получателя широковещательного сообщения,
* которое рассылается, когда заряд батареи изменяется. */
this.registerReceiver(this.myBatteryReceiver,
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
/** Константа Intent.ACTION_BATTERY_CHANGED заменяется константой
* Intent.ACTION_BATTERY_LOW, чтобы получать сообщение, только
* когда уровень заряда батареи ниже порога, вместо того чтобы
* рассылать широковещательное сообщение при каждом изменении заряда
* батареи.
* Существует также константа ACTION_BATTERY_OK для случая, когда
* уровень заряда батареи превышает нижний порог.
*/
}
private BroadcastReceiver myBatteryReceiver =
new BroadcastReceiver() {
@Override
public void onReceive(Context ctx, Intent intent) {
// bLevel is battery percent-full as an integer
int bLevel = intent.getIntExtra("level", 0);
Log.i("BatteryMon", "Level now " + bLevel);
}
};
}
Константы action_battery_low
и action_battery_ok
не документированы и настраиваются только путем перестройки операционной системы, но они могут составлять около 10 и 15 или 15 и 20 соответственно.