Подскажите как подступиться к задаче.
Хочу на блокированном экране при долгом нажатии клавиши громкости включать фонарь.
Всю интерфейсную часть знаю как реализовать, но затык в отлове клавиш.
Раньше бекграундные задачи (блокировка переворотом, отключение звонка переворотом) сделал сервисами. Все работает.
Здесь вроде бы тоже могу запустить/остановить сервис по выключению/включению экрана, но сервисы не работают с клавишами.
Клавиши обрабатываются только из активити.
Вопрос, можно ли по выключению экрана вызвать подготовленное активити без экранной формы, которое будет только слушать клавиши? Будет ли оно исполнятся в режиме deep sleep?
Отвечу сам.
Вызвать на экран можно, но работать в deep sleep работать не будет. Встанет в Sleep. Как Только экран разблокируется активити будет на "переднем плане" и будет выполнять свои задачи.
Есть какие-нибудь мнения, как обойти ограничения и решить задачу?
Отслеживание нажатия клавиш на блокированном экране
Re: Отслеживание нажатия клавиш на блокированном экране
Здравствуйте. Для таких целей существует широковещательные слушатели Broadcast Receiver. Почитайте про них.http://developer.alexanderklimov.ru/and ... adcast.phpX-Dron писал(а):Подскажите как подступиться к задаче.
Хочу на блокированном экране при долгом нажатии клавиши громкости включать фонарь.
Всю интерфейсную часть знаю как реализовать, но затык в отлове клавиш.
Раньше бекграундные задачи (блокировка переворотом, отключение звонка переворотом) сделал сервисами. Все работает.
Здесь вроде бы тоже могу запустить/остановить сервис по выключению/включению экрана, но сервисы не работают с клавишами.
Клавиши обрабатываются только из активити.
Вопрос, можно ли по выключению экрана вызвать подготовленное активити без экранной формы, которое будет только слушать клавиши? Будет ли оно исполнятся в режиме deep sleep?
Отвечу сам.
Вызвать на экран можно, но работать в deep sleep работать не будет. Встанет в Sleep. Как Только экран разблокируется активити будет на "переднем плане" и будет выполнять свои задачи.
Есть какие-нибудь мнения, как обойти ограничения и решить задачу?
Re: Отслеживание нажатия клавиш на блокированном экране
Я же написалSergey777 писал(а): Здравствуйте. Для таких целей существует широковещательные слушатели Broadcast Receiver. Почитайте про них.http://developer.alexanderklimov.ru/and ... adcast.php
Т.е. ловлю android.intent.action.SCREEN_ON и android.intent.action.SCREEN_OFFмогу запустить/остановить сервис по выключению/включению экрана, но сервисы не работают с клавишами.
Код: Выделить всё
br = new BroadcastReceiver() {
// действия при получении сообщений
public void onReceive(Context context, Intent intent) {
if (DEDUG) Log.d(TAG, intent + " Received");
}
};
// создаем фильтр для BroadcastReceiver
intFiltr = new IntentFilter();
intFiltr.addAction("android.intent.action.SCREEN_ON");
intFiltr.addAction("android.intent.action.SCREEN_OFF");
// регистрируем (включаем) BroadcastReceiver
registerReceiver(br, intFiltr);Формировать интенты в активити, которое слушает клавиши не вариант. Активити спит, когда тело заблокировано.