Android: какие события активируют устройство

Я написал приложение для Android, и теперь есть проблема.

Если мое приложение работает, и я выключаю устройство, то иногда оно просто просыпается примерно через 8 секунд, а затем включается экран и снова отображается мое приложение.

Мой вопрос: какие события или ограничения обработки (например, обработка широковещательных намерений) пробуждают устройство?

Изменить: Будет ли сигнал тревоги с RCT_WAKEUP включить экран устройства?

Заранее спасибо!

1 ответ

AlarmManager на самом деле не будет включать экран для вас. Вы можете использовать вместо этого wakelock.

PowerManager.WakeLock wakelock;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    .........

    PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
    wakelock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
                | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "AlarmReceiver");
    wakelock.acquire();       
}

Когда вы закончите с активностью, просто убедитесь, что вы отключили wakelock:

@Override
protected void onStop() {
    super.onStop();
    wakelock.release();
}

Вам также необходимо добавить разрешение блокировки пробуждения в файл манифеста:

<uses-permission android:name="android.permission.WAKE_LOCK"/>

Кроме того, если вы не хотите включать это дополнительное разрешение, вы можете использовать следующий код в своей деятельности вместо использования wakelock:

this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN |
                WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
                WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
                WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
                WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Другие вопросы по тегам