Как захватить ключевые события от Bluetooth-гарнитуры с Android

Моим приложением можно управлять с помощью обычной гарнитуры. Он просто переопределяет "onKeyDown". Но ключевые события от bluetooth-гарнитуры не фиксируются - почему? Или как перехватить события bluetooth key?

«Журнал кот» показывает следующее, если я нажимаю кнопку на гарнитуре:

Bluetooth AT recv(3043): AT+VGS=15
AudioPolicyManagerBase(13654): FM radio recording off
AudioService(2261): sendVolumeUpdate, isKeyguardLocked...Not to update Volume Panel.
VolumePanel(2261): change volume by MSG_VOLUME_CHANGED
VolumePanel(2261): onVolumeChanged(streamType: 6, flags: 0)
VolumePanel(2261): Call setChangeSeekbarColor(false)

Я также пытался обрабатывать действия мультимедийных кнопок, но это не работает. моя идея - это свободно настраиваемое сопоставление клавиш: пользователь выбирает «установить ключ», которое мое приложение слышит на всех клавишах (аппаратные средства, мультимедийные кнопки, Bluetooth-гарнитура), затем пользователь нажимает клавишу, и код события / ключа сохраняется в конфигурации.

Подведение итогов не работает Ответы: Кнопки громкости должны быть захвачены "VOLUME_CHANGED_ACTION". Проблема в том, что эти намерения транслируются в другие приложения, а abortBroadcast () не работает (работает только для «заказанных» трансляций). Другая проблема заключается в том, что клавиши на кабельной гарнитуре и на телефоне дважды вызывают функцию onReceive () (почему?). Следующая проблема - 3-ий ключ на гарнитуре Bluetooth. Он запускает голосовую команду (s-voice запускается на s3), я пытался уловить много разных намерений относительно этого, но я не могу «получить» нажатие этой кнопки и не знаю почему. В конце я хочу захватить все виды кнопок и не хочу, чтобы они обрабатывались другими приложениями (например, используя onKeyDown и возвращая true).

Ответы на вопрос(3)

Ваш ответ на вопрос