Страница 1 из 1

Отслеживание нажатия клавиш на блокированном экране

Добавлено: 13 фев 2016, 19:04
X-Dron
Подскажите как подступиться к задаче.
Хочу на блокированном экране при долгом нажатии клавиши громкости включать фонарь.
Всю интерфейсную часть знаю как реализовать, но затык в отлове клавиш.
Раньше бекграундные задачи (блокировка переворотом, отключение звонка переворотом) сделал сервисами. Все работает.
Здесь вроде бы тоже могу запустить/остановить сервис по выключению/включению экрана, но сервисы не работают с клавишами.
Клавиши обрабатываются только из активити.
Вопрос, можно ли по выключению экрана вызвать подготовленное активити без экранной формы, которое будет только слушать клавиши? Будет ли оно исполнятся в режиме deep sleep?
Отвечу сам.
Вызвать на экран можно, но работать в deep sleep работать не будет. Встанет в Sleep. Как Только экран разблокируется активити будет на "переднем плане" и будет выполнять свои задачи.

Есть какие-нибудь мнения, как обойти ограничения и решить задачу?

Re: Отслеживание нажатия клавиш на блокированном экране

Добавлено: 14 фев 2016, 08:44
Sergey777
X-Dron писал(а):Подскажите как подступиться к задаче.
Хочу на блокированном экране при долгом нажатии клавиши громкости включать фонарь.
Всю интерфейсную часть знаю как реализовать, но затык в отлове клавиш.
Раньше бекграундные задачи (блокировка переворотом, отключение звонка переворотом) сделал сервисами. Все работает.
Здесь вроде бы тоже могу запустить/остановить сервис по выключению/включению экрана, но сервисы не работают с клавишами.
Клавиши обрабатываются только из активити.
Вопрос, можно ли по выключению экрана вызвать подготовленное активити без экранной формы, которое будет только слушать клавиши? Будет ли оно исполнятся в режиме deep sleep?
Отвечу сам.
Вызвать на экран можно, но работать в deep sleep работать не будет. Встанет в Sleep. Как Только экран разблокируется активити будет на "переднем плане" и будет выполнять свои задачи.

Есть какие-нибудь мнения, как обойти ограничения и решить задачу?
Здравствуйте. Для таких целей существует широковещательные слушатели Broadcast Receiver. Почитайте про них.http://developer.alexanderklimov.ru/and ... adcast.php

Re: Отслеживание нажатия клавиш на блокированном экране

Добавлено: 14 фев 2016, 10:42
X-Dron
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);
Но для того, чтобы использовать Receiver нужно, чтобы система формировала соответствующие интенты. Что-то, про интенты нажатия клавиш я не слыхал. Может подскажете :).
Формировать интенты в активити, которое слушает клавиши не вариант. Активити спит, когда тело заблокировано.