Можно ли написать приемник Android-трансляции, который определяет, когда телефон просыпается? - PullRequest
9 голосов
/ 05 апреля 2010

Я хочу выяснить, как определить, когда телефон выходит из режима черного экрана, и написать обработчик для этого события. Это возможно? Кажется, что это будет что-то, что должен обрабатывать широковещательный приемник? Или есть лучший или более правильный способ?

Ответы [ 3 ]

3 голосов
/ 20 июня 2012

У вас также может быть широковещательный приемник, который ловит намерение широковещания USER_PRESENT, когда пользователь разблокировал устройство. Естественно, что некоторые версии Honeycomb не соблюдают это, но для всех версий Android (2.x и 4.x), не имеющих мозгов, они прекрасно работают.

3 голосов
/ 05 апреля 2010

Если у вас есть активная служба, вы можете перехватить эти события с помощью

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?

0 голосов
/ 05 апреля 2010

Вы находитесь прямо на приемнике вещания. Вы можете прослушивать события трансляции SCREEN_ON и SCREEN_OFF.

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