Обработка кнопок гарнитуры перед голосовым поиском в Jelly Bean

Android Jelly Bean представил голосовой поиск, который активируется долгим нажатием кнопки воспроизведения/паузы на гарнитуре. Поскольку мое приложение требует возможности использовать эти длинные нажатия, мне было интересно, есть ли способ отключить голосовой поиск или заставить Android играть честно с событиями кнопки.


person tvkanters    schedule 12.07.2012    source источник


Ответы (1)


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

Музыкальное приложение AOSP имеет MediaButtonIntentReceiver который реагирует на нажатие кнопки громкости.

Кредит на это решение принадлежит этому ответу.

person Bryan Herbst    schedule 17.07.2012
comment
Я не боюсь. В Android 4.0+ все приемники медиа-кнопок должны использовать registerMediaButtonEventReceiver для приема нажатий кнопок. Эта часть все еще работает, но, к сожалению, Android не дает намерения сторонним приложениям перед обработкой голосового поиска. - person tvkanters; 17.07.2012
comment
Приложение Pressy умеет цеплять долгое нажатие кнопки гарнитуры (даже на Lollipop). У Pressy есть специальный интерфейс с кнопкой «Перейти», которая, по-видимому, запускает какое-то намерение и заставляет систему спрашивать, хотите ли вы сделать Pressy или Google Search по умолчанию. Я хотел бы знать, как это достигается. - person Oliver Pearmain; 19.12.2014