Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Различать время ожидания экрана и нажатие кнопки питания?

Автор вопроса: NickОтветов: 4

мое приложение что-то делает, когда экран становится черным, но я хочу, чтобы оно выполняло эту задачу только в том случае, если экран был выключен "сам по себе", через время ожидания экрана, а НЕ когда пользователь нажимает кнопку питания. Есть ли способ различить эти два события?

ACTION_SCREEN_OFF очевидно срабатывает в обоих случаях, и я не нашел никаких других намерений, которые могли бы соответствовать тому, что я ищу.

  • Что ты пытаешься сделать? Там может быть другое действие, чтобы слушать. CaseyB 04.05.2010
  • Я пытаюсь выполнить простой расчет, когда время ожидания экрана истекло, но не когда пользователь нажимает кнопку питания, чтобы "принудительно" выключить экран. Timeout-Action было бы здорово, но я пока не нашел ничего подобного. Можно ли запросить, включен ли экран блокировки (что, как я полагаю, обычно происходит только при нажатии кнопки питания, по крайней мере, на N1)? Nick 05.05.2010
  • Почему вы хотите сделать это только в этой ситуации? Если вы объясните, что и почему, возможно, кто-то предложит вам лучшее решение. o0'. 05.05.2010
  • Может ли это помочь: stackoverflow.com/a/8941006/969325 Warpzit 18.05.2013
  • Спасибо, Warpzit, я проверю! Nick 19.05.2013

androidandroid-intent

Ответы

Ответ 1 · рейтинг 4 · berkus

На нижнем уровне происходит событие, когда время ожидания экрана истекает, посмотрите с помощью "adb logcat", и вы увидите это, копайте оттуда.

Ответ 2 · рейтинг 1 · Nelz11

Службы не могут напрямую обрабатывать события кнопок. Возможно, вы можете сделать так, чтобы ваша активность зарегистрировала широковещательный приемник, чтобы получать уведомления, когда экран гаснет, а затем сделать так, чтобы активность проверяла последнюю нажатую клавишу, чтобы увидеть, была ли это кнопка питания - если это не так, вы можете отправить транслируйте на свой сервис и запускайте все, что хотите.

Ответ 3 · рейтинг 1 · Sean

Это забавный вопрос :) Хотя это и не точно, вы можете попробовать замерить время, прошедшее с момента последнего касания пользователя и до того момента, когда ваша активность приостановится, и посмотреть, соответствует ли оно время отключения экрана

Ответ 4 · jimrandomh

Можете ли вы прослушать событие клавиатуры KEYCODE_POWER? Это может сделать то, что вы хотите. (Но порядок, в котором это и ACTION_SCREEN_OFF прибывают, может быть не гарантирован).

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы