¿Qué determina qué aplicación actúa ante un comando bluetooth AVRCP?

18

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:

Ilari Kajaste
fuente
1
Logré encontrar buena información relacionada con esto en un blog para desarrolladores de Android, discutiendo la forma correcta en que las aplicaciones deberían implementar esto en 2.2: "Permitir que las aplicaciones jueguen bien (r) entre sí: manejo de botones de control remoto"
Ilari Kajaste
En 2016, esto sigue siendo un problema. - Pasar de iOS podría ser la parte más irritante de Android para mí hasta ahora: /
Squazz

Respuestas:

11

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_BUTTONen 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.

Silas
fuente
0

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.

Chihwah Li
fuente
0

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.

Rizwan Ul Haq
fuente