Como capturar os principais eventos do fone de ouvido bluetooth com android

Meu aplicativo pode ser controlado pelo fone de ouvido normal. Ele simplesmente sobrescreve "onKeyDown". Mas os principais eventos do fone de ouvido bluetooth não são capturados - por quê? Ou como capturar eventos de chave do bluetooth?

o "gato de log" mostra o seguinte se eu pressionar o botão no fone de ouvido:

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)

Eu também tentei manipular ações de botão de mídia, mas isso não está funcionando. minha idéia é um mapeamento de tecla configurável livre: o usuário escolhe "definir chave" meu aplicativo ouve em todas as chaves (hardware, botões de mídia, fone de ouvido bluetooth), em seguida, o usuário pressiona uma tecla e o código de evento / chave é armazenado em config.

Summerizing não está funcionando Respostas: Os botões de volume devem ser capturados por "VOLUME_CHANGED_ACTION". O problema é que essas intenções são transmitidas para outros aplicativos e abortBroadcast () não funciona (funciona apenas para transmissões "ordenadas"). Outro problema é que as teclas no fone de ouvido a cabo e no telefone acionar onReceive () duas vezes (por que?) O fone de ouvido bluetooth aciona uma vez. O próximo problema é a terceira chave no fone de ouvido Bluetooth. Ele aciona o comando de voz (s-voz começa no s3), eu tentei capturar muitas intenções diferentes sobre isso, mas eu não posso "receber" este botão pressionado e não sei porquê. No final, eu quero capturar todos os tipos de botões e não quero que eles sejam manipulados por outros aplicativos (como usar onKeyDown e retornar true).

questionAnswers(3)

yourAnswerToTheQuestion