Я хочу выяснить, как определить, когда телефон выходит из режима черного экрана, и написать обработчик для этого события. Это возможно? Кажется, что это будет что-то, что должен обрабатывать широковещательный приемник? Или есть лучший или более правильный способ?
У вас также может быть широковещательный приемник, который ловит намерение широковещания USER_PRESENT, когда пользователь разблокировал устройство. Естественно, что некоторые версии Honeycomb не соблюдают это, но для всех версий Android (2.x и 4.x), не имеющих мозгов, они прекрасно работают.
Если у вас есть активная служба, вы можете перехватить эти события с помощью
registerReceiver(new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // do something } }, new IntentFilter(Intent.ACTION_SCREEN_ON));
Однако это зависит от наличия постоянно работающей службы, которую я недавно узнал, не рекомендуется, поскольку она хрупкая (ОС любит их закрывать) и постоянно использует ресурсы.
К сожалению, кажется, что в манифесте нет получателя, который перехватывает события SCREEN_ON.
Это появилось совсем недавно:
android.intent.action.SCREEN_ON не работает как фильтр намерений получателя
также
Android - как получить широковещательные намерения ACTION_SCREEN_ON / OFF?
Вы находитесь прямо на приемнике вещания. Вы можете прослушивать события трансляции SCREEN_ON и SCREEN_OFF.