Отключить / включить BroadcastReceiver, когда батарея разряжена / все в порядке - PullRequest
0 голосов
/ 05 сентября 2011

Я работаю над приложением, которое использует будильник для периодических действий.Будильник устанавливается после завершения загрузки телефона.BroadcastReceiver получение сигнала тревоги и запуск службы отключается, когда батарея разряжается, и включается, когда батарея снова в порядке:

@Override
public void onReceive(final Context context, final Intent intent) {
    if (intent != null && intent.getAction() != null) {
        String action = intent.getAction();
        if (action.equals(Intent.ACTION_BOOT_COMPLETED)) {
            // Set alarm
        } else if (action.equals(Intent.ACTION_BATTERY_LOW)) {
            setLocationAlarmReceiverEnabled(context, false);
        } else if (action.equals(Intent.ACTION_BATTERY_OKAY)) {
            setLocationAlarmReceiverEnabled(context, true);
        }
    }
}

private void setLocationAlarmReceiverEnabled(final Context context,
        final boolean enabled) {
    PackageManager packageManager = context.getPackageManager();
    ComponentName locationAlarmReceiver = new ComponentName(context,
            LocationAlarmReceiver.class);
    packageManager.setComponentEnabledSetting(locationAlarmReceiver,
        enabled ? PackageManager.COMPONENT_ENABLED_STATE_DEFAULT
                : PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
        PackageManager.DONT_KILL_APP);
}

В практическом тесте я могу подтвердить, что BroadcastReceiver «LocationAlarmReceiver» получаетотключается, когда уровень заряда батареи падает до 15%, а после того, как телефон был подключен к AC / USB, он снова включается, когда уровень заряда батареи повышается до 30%.

Но теперь у меня был следующий сценарий:

  1. Уровень заряда батареи снижается до 15%, «LocationAlarmReceiver» отключается
  2. Телефон в конечном итоге отключается из-за разряда батареи
  3. Телефон подключен к сети переменного тока / USB
  4. Телефон включен и загружается, продолжает заряжаться, уровень заряда батареи достигает 100%
  5. «LocationAlarmReceiver» по-прежнему отключен

Я могу только догадываться, что Intent.ACTION_BATTERY_OKAY Намерение никогда не доставлялось.

Правильно ли это наблюдение?Как я могу убедиться, что «LocationAlarmReceiver» снова включается?

1 Ответ

1 голос
/ 05 сентября 2011

Если вы не получаете вызов на Intent.ACTION_BATTERY_OKAY, то вам следует включить приемник, когда вы получаете вызов в ACTION_BOOT_COMPLETED, проверьте, отключен ли ваш приемник, тогда вам следует включить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...