Cómo capturar eventos clave de los auriculares bluetooth con Android

Mi aplicación puede ser controlada por un auricular normal. Simplemente anula "onKeyDown". Pero los eventos clave de los auriculares bluetooth no se capturan, ¿por qué? ¿O cómo capturar eventos clave de bluetooth?

el "log cat" muestra lo siguiente si presiono el botón del auricular:

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)

También intenté manejar las acciones de los botones multimedia, pero esto no funciona. Mi idea es una asignación de teclas configurable gratuita: el usuario elige "establecer tecla" y mi aplicación escucha en todas las teclas (hardware, botones multimedia, auriculares bluetooth), luego el usuario presiona una tecla y el código de evento / clave se almacena en la configuración.

Summerizing no funciona Respuestas: Los botones de volumen deben capturarse con "VOLUME_CHANGED_ACTION". El problema es que estos intentos se transmiten a otras aplicaciones y abortBroadcast () no funciona (solo funciona para transmisiones "ordenadas"). Otro problema es que las teclas en los auriculares con cable y en el teléfono activan onReceive () dos veces (¿por qué?) Los auriculares Bluetooth lo activan una vez. El siguiente problema es la tercera tecla en los auriculares Bluetooth. Activa el comando de voz (s-voice comienza en s3), traté de capturar muchos intentos diferentes con respecto a esto, pero no puedo "recibir" este botón presionando y no sé por qué. Al final, quiero capturar todo tipo de botones y no quiero que sean manejados por otras aplicaciones (como usar onKeyDown y devolver el valor verdadero).

Respuestas a la pregunta(3)

Su respuesta a la pregunta