Мое приложение может управляться обычной гарнитурой. Он просто переопределяет "onKeyDown". Но ключевые события от Bluetooth-гарнитуры не фиксируются - почему? Или как захватить события клавиш bluetooth?
"log cat" показывает следующее, если я нажимаю кнопку на гарнитуре:
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-гарнитура), затем пользователь нажимает клавишу, а событие / key code сохраняется в config.
Летняя работа не работает Ответы: Кнопки громкости должны быть записаны с помощью "VOLUME_CHANGED_ACTION". Проблема в том, что это намерение транслируется в другие приложения, а abortBroadcast() не работает (он работает только для "упорядоченных" трансляций). Другая проблема заключается в том, что клавиши на кабельной гарнитуре и на телефоне триггера onReceive() дважды (почему?) Гарнитура bluetooth запускает его один раз. Следующая проблема - 3-й ключ в Bluetooth-гарнитуре. Он запускает голосовую команду (s-voice начинается с s3), я пытался захватить много разных намерений по этому поводу, но я не могу "получить" эту кнопку нажатием и не знаю почему. В конце я хочу захватить всевозможные кнопки и не хочу, чтобы они обрабатывались другими приложениями (например, с помощью onKeyDown и возвратом true).