Antecedentes: Tengo un auricular Bluetooth A2DP / AVRCP ( Nokia BH-505 ) que uso activamente para escuchar tanto podcasts como música. Por supuesto, los escucho con diferentes aplicaciones. El auricular bluetooth tiene algunos botones de "comando" (AVRCP), relevantes para el audio - en específico: "siguiente pista", "pista anterior" y "reproducir / pausar"
Actualmente, cada vez que presiono cualquiera de los comandos, uno de los reproductores de música que he instalado ( Meridian ) siempre recibe el comando, incluso cuando no está activo. Entonces, cuando hago clic en "reproducir / pausar" con la intención de pausar un podcast ( DoggCatcher ), Meridian se activa y comienza a reproducir música junto con el podcast.
Ambos jugadores están configurados para usar los auriculares: DoggCatcher tiene "Vincular a auriculares" activado y Meridian tiene "Botones de auriculares" activados. Actualmente estoy usando Android 2.2.1 no rooteado en GT-S5570 pero podría estar rooteando y actualizando a 2.3 CyanogenMod (o tal), en el futuro.
Ignorando los detalles, mi pregunta sobre esto es más general:
- ¿Cómo determina Android qué aplicación reacciona a estos comandos? Estoy interesado incluso en una respuesta muy técnica.
En el aspecto práctico me interesan:
- ¿Tengo que jugar con la configuración de cada aplicación para determinar qué aplicación toma los comandos, o hay alguna forma general de determinar esto?
- ¿Hay alguna forma de configurar esto para que la aplicación que está realmente activa siempre obtenga automáticamente la prioridad? (como se preguntó en parte en otra pregunta )
Cómo esta pregunta difiere de preguntas similares:
"Cómo configurar el comportamiento del botón 'Reproducir' en el control remoto Bluetooth" : solo un enfoque práctico y diferente, hasta ahora no tiene respuestas, y también estoy interesado en respuestas que requieran rooting o firmware personalizado (especialmente CyanogenMod).
Cambie la aplicación predeterminada para manejar los controles de los auriculares : un problema exacto que se solucionó, pero no de una manera que respondería a mis preguntas, aunque da algunas pistas sobre cómo funcionan las cosas.
¿Cómo puedo hacer que el botón de mis auriculares controle algo más que el reproductor de música original? - pregunta en parte similar en el lado práctico, pero no se enfoca en explicar cómo funciona realmente, y la única respuesta se centra en la parte que no estoy preguntando (hacer que solo una aplicación reciba los comandos).
¿Por qué todas las aplicaciones de sonido obtienen eventos de botón de Bluetooth, todo a la vez ? Muy similar, pero preguntando sobre un problema específico (todos los reproductores multimedia obtienen el comando AVRCP)
fuente
Respuestas:
media-button-router , ya mencionado en una de sus preguntas vinculadas, intenta averiguar qué aplicación está reproduciendo música actualmente y enviarle los eventos AVRCP. Además, enumera todas las aplicaciones instaladas que declaran escuchar eventos AVRCP.
Lo que hace que AVRCP sea complicado: algunas aplicaciones, como Music Unlimited de Sony , parecen no declararse
android.intent.action.MEDIA_BUTTON
en su manifiesto. Por esta razón (o tal vez por alguna otra), no se pueden controlar a través del enrutador de botón de medios. Sé que, por ejemplo, Music Unlimited se puede controlar a través de AVRCP ya que lo leí en un comentario del usuario y también pude hacerlo funcionar una vez, pero desafortunadamente no es reproducible. Entonces, en esos casos, parece que tenemos que esperar la actualización de una aplicación con una implementación limpia del manejo de eventos AVRCP.Según el wiki de media-button-router "El manejo de la intención del botón de medios se realiza a través de transmisiones ordenadas, y cada aplicación establece su propia prioridad para la recepción". Entonces, tal vez sea posible escribir una aplicación que muestre estas prioridades y, en efecto, le permita determinar qué aplicación se iniciará. Sin embargo, no sé acerca de tal aplicación.
fuente
Finalmente agregaron una sección para responder a esta pregunta exacta: https://developer.android.com/guide/topics/media-apps/mediabuttons.html
fuente
Quizás esto ayude un poco:
Samsung S5 -> Receptor Bluetooth + Enchufes para auriculares
Estoy usando Samsung S5, primero con la aplicación 7digital para descargar y reproducir música. Luego cambié y usé Cloudplayer. Pero cada vez que se reproduce Clouplayer y presiono el botón de pausa / reproducción en mi receptor Bluetooth, mi aplicación 7digital comenzará a reproducir música. No pude cambiar ninguna configuración para cambiar la reproducción / pausa del bluetooth hacia Cloudplayer. Luego borré toda mi música descargada de 7digital e intenté nuevamente. ¡Problema resuelto! Reproducir / pausar está de alguna manera vinculado a Cloudplayer ahora.
fuente
No es un problema con su dispositivo BT. Cuando se combina con su teléfono, los auriculares Bluetooth reproducen la transmisión A2DP activa iniciada desde el teléfono móvil. Si se trata de un reproductor multimedia estándar en su teléfono, puede reaccionar a todos los comandos de control AVRCP, como reproducir, pausar, omitir, etc. Ahora, cuando reproduzca algo en la web o en otro reproductor que no implemente todos los controles sobre AVRCP, por BT Headset sigue siendo un flujo activo de A2DP. Enviará mensajes de control AVRCP a su teléfono. Ahora es su teléfono el que debe enrutar estos comandos a la aplicación respectiva en la mayoría de los casos a la fuente de transmisión A2DP activa o en su caso su teléfono aún está reenviando comandos AVRCP al reproductor de música predeterminado.
Su mejor opción sería intentar configurar su teléfono móvil siempre que la fuente que está reproduciendo admita el control AVRCP. Si no es así, de todos modos no puedes hacer nada. Si lo hace, definitivamente Mobile debería permitir que estos comandos AVRCP sean manejados por su fuente de transmisión A2DP activa.
fuente
Esta aplicación sería "Media Button Router" https://play.google.com/store/apps/details?id=com.harleensahni.android.mbr
fuente