Поймать долгое нажатие кнопки громкости во сне (андроид) - PullRequest
2 голосов
/ 12 мая 2011

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

@Override
public boolean onKeyLongPress(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) 
    {
        // to your stuff here
        return true;
    }
    return super.onKeyLongPress(keyCode, event);
}

не помогает (работает только в активных целях

1 Ответ

6 голосов
/ 25 мая 2011

Мне тоже интересно об этом. Хотя это и не обязательно ответ, я провел некоторое исследование служб (чтобы поймать громкость печати, которую я предполагаю) и BroadcastReceivers (onReceive () получит намерение для ACTION_SCREEN_OFF и, вероятно, установит флаг для отключения экрана) , Я думаю, что запускаю службу, когда экран выключается, и убиваю ее, когда экран включается, но я не знаю, как объединить onKeyLongPress и службу.

Последовательность, с которой я сталкиваюсь, выглядит следующим образом: Экран выключается -> BroadcastReceiver получает эту команду и запускает службу для наблюдения за громкостью нажатия -> принимает громкость нажатия и выполняет свою логику -> убивает службу, если экран включается.

Я нашел сайт, который, по-видимому, обрабатывает включение / выключение экрана и в котором есть пример действия и службы, но я пока не могу что-то собрать: http://thinkandroid.wordpress.com/2010/01/24/handling-screen-off-and-screen-on-intents/

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

Удачи!

...