Ключевые события в сервисах Android - PullRequest
1 голос
/ 31 августа 2011

Я пришел к выводу, что у меня не может быть службы Android для захвата ключевых событий.Но - может быть, у некоторых будет обходной путь.У меня есть приложение для плеера, которое я хочу воспроизвести / приостановить с помощью специальной кнопки на наушниках (входит в комплект поставки Samsung Galaxy S).Это кнопка для приема и завершения телефонных звонков, установленных на телефонном кабеле.Я тестировал эту кнопку - она ​​равна KeyCode.KEYCODE_BUTTON_B const (79).И это может быть обработано, когда мой плеер находится на экране, но я хотел бы играть / приостановить также, когда мой телефон заблокирован (с выключенным экраном).Как вы думаете, это возможно?Я думаю, что для переадресации вызовов Android использует хитрость: когда кто-то звонит, экран активируется, и действие по переадресации вызовов может обрабатывать ключевые события (я думаю - так оно и работает, но я могу ошибаться).Я понятия не имею - как воспроизвести / приостановить мое приложение с помощью этой кнопки.

1 Ответ

0 голосов
/ 31 августа 2011

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

Прослушивание и отключение экрана Intents. Когда вы получаете SCREEN_OFF, запускайте «пустое» действие, которое ничего не делает, кроме как прослушивает нажатие вашей кнопки и передает его вашей музыкальной службе. Когда вы получите SCREEN_ON finish (), это пустое действие.

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

Примечание о прослушивании для намерений SCREEN_OFF и SCREEN_ON. Когда я сделал это, мне пришлось установить фильтр для моего получателя в коде Java, а не в манифесте. По какой-то причине, когда я установил фильтр намерений из манифеста, он не получал эти намерения должным образом.

...