/ / FLAG_TURN_SCREEN_ON nie działa - Android, Android-Intent, Android-Activity, Android-Windowmanager

FLAG_TURN_SCREEN_ON nie działa - Android, intent Androida, aktywność Androida, menedżer okien Androida

Mam usługę z zarejestrowanym akcelerometrem w środku. Po rozpoznaniu określonego wzorca wstrząsania usługa rozpoczyna jedną czynność przy użyciu tego kodu.

Intent launchIntent = new Intent("my.package.MAIN_ACTIVITY");
LaunchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(LaunchIntent);

W onCreate Używam tego fragmentu kodu, aby odblokować telefon i włączyć ekran:

Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON|
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

Jeśli użytkownik nie wchodzi w interakcję z aktywnością przez jakiś czas, używam tego kodu, aby włączyć wyświetlanie:

Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

Jeśli wyświetlacz wyłączy się, a telefon zablokuje się podczas wyświetlania aktywności, a ja powtórzę wzór wstrząsania onStart wywoływana jest metoda Próbowałem umieścić ten sam kod do włączania i odblokowywania jak powyżej, ale to nie działa (wyświetlacz nie jest włączony).

Jaki może być problem?

Odpowiedzi:

4 dla odpowiedzi № 1

Udało mi się rozwiązać problem. Zaczynam swoją aktywność WakeLock:

PowerManager pm = ((PowerManager) getSystemService(POWER_SERVICE));
screenLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG");
screenLock.acquire();

Ten kod zapobiegnie wyłączeniu ekranu. Ale potem uruchamiam licznik z opóźnieniem kilku sekund i wyłącza WakeLock:

if(screenLock.isHeld()) {
screenLock.release();
}