2015-02-19 1 views
0

Я пытаюсь определить, выключен ли экран. Пробовал с BroadcastReceiver, но не работал должным образом.isScreenOn() возвращает true, когда экран выключен

Так что я попробовал с менеджером электропитания isScreenOn() в onPause(), и он отлично работает. Но я заметил, что когда я нажимаю кнопку питания, чтобы заблокировать экран, а затем сразу же нажмите его еще раз, чтобы разблокировать его, isScreenOn() возвращает true.

Вы можете мне помочь?

Я не могу найти решение по этому вопросу.

Вот код:

@Override 
public void onPause() { 
    super.onPause(); 
    //registBroadcastReceiver(); 

    PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); 
    boolean isScreenOn = powerManager.isScreenOn(); 

    if (!isScreenOn) { 
     Log.d("Screen", "OFF"); 
     flag1 = true; 
    } 

} 
+0

Что вы хотите сказать? Если isScreenOn() не вызван, вы не можете сказать, что он работает неправильно. – CurlyCorvus

+0

проблема в том, что isScreenOn не вызывается только в том случае, если я дважды нажимаю кнопку питания в строке – smns15

+0

вам удалось исправить это? – jonney

ответ

0

Основываясь на этой ссылке на Руководство Android разработчика: http://developer.android.com/reference/android/os/PowerManager.html#isInteractive()

isScreenOn() 

не проверяет, если экран включен или выключен, а в том или нет, это интерактивно.

«Значение, возвращаемое этим методом, указывает только, находится ли устройство в интерактивном состоянии, которое не может иметь ничего общего с включенным или выключенным экраном. Чтобы определить фактическое состояние экрана, используйте getState()».

+0

В любом случае экран не является интерактивным, и он по-прежнему возвращает true – smns15

+0

Вы сделали вызов isInteractive и обнаружили, что он вернул false? – Chris

+0

My Target API - 9, поэтому «isInteractive» не приносит мне никакой пользы – smns15

Смежные вопросы