Android захватывает нажатие клавиш увеличения / уменьшения громкости в широковещательном приемнике? - PullRequest
4 голосов
/ 16 июля 2011

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

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
super.onKeyUp(keyCode, event);
if ((keyCode == KeyEvent.KEYCODE_VOLUME_UP)) {
    //this is where I can do my stuff
    return true; //because I handled the event
}
return false; //otherwise the system can handle it        

}

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

Спасибо за любую помощь.

Ответы [ 4 ]

2 голосов
/ 16 июля 2011

, а также кнопка включения / выключения экрана - возможно ли это?

К счастью, нет.

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

Это невозможно для кнопок регулировки громкости.

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

Это кнопка камеры.Если действие на переднем плане не требует нажатия кнопки камеры, оно превращается в трансляцию Intent, которую могут прослушивать другие приложения.Это поведение уникально для кнопок камеры и мультимедиа и не используется с другими аппаратными кнопками.

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

Это, вероятно, не будет делать то, что вы хотите, но если вы делаете IME, IME может захватывать кнопки громкости +/- и делать все, что захочет, как переназначение для других нажатий кнопок. Например, я изменил IME в стиле Gingerbread, чтобы поворачивать кнопки регулировки громкости +/- для перемещения страниц вверх / вниз в приложениях Kindle и Overdrive.

0 голосов
/ 16 июля 2011

Это (легко) невозможно, потому что метод onKeyDown переопределяет Activity.onKeyDown (). По этой причине для получения вызовов этих функций необходимо иметь приоритетное действие.

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

0 голосов
/ 16 июля 2011

это не очень хорошая идея.это означает, что каждый раз, когда вы нажимаете клавиши увеличения / уменьшения громкости, вы собираетесь снимать его независимо от того, где вы находитесь.Что делать, если я хочу изменить громкость звонка?объем СМИ?приложение, которое использует рокеры для других целей?это просто не будет работать хорошо и просто раздражать людей.плюс, я не уверен, выполнимо ли это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...