Logo es.androidermagazine.com
Logo es.androidermagazine.com

Repetición: la creciente lucha de los controles de reproducción a través de bluetooth

Anonim

Es lo que uso en el trabajo, en casa, en la cama, en la ducha y en todas partes para mantenerme cuerdo y feliz. La música me hace mejor, y dado que la música es una parte tan importante de mi experiencia con Android, ha habido una lenta disminución de la que he sido dolorosamente consciente en los últimos años, y especialmente en los últimos meses.

A veces enciendo mis auriculares Bluetooth, presiono play y no pasa nada. Y nada pasa mucho más de lo que solía.

En mis primeros días con Android, con Soarin en mi bolsillo (sí, llamé a mi Samsung Captivate Glide) y mi primer par de auriculares Kinivo Bluetooth alrededor de mi cuello, no tenía que tener Google Play Music abierto, solo necesitaba golpear tocar en mis auriculares De hecho, saqué un Samsung Galaxy SII de un cajón, lo encendí por primera vez en meses, emparejé auriculares Bluetooth con él y presioné el botón de reproducción. Y la música sonó.

No tanto en los dispositivos actuales en mi establo.

El HTC 10 simplemente no obedece los controles de Bluetooth a veces, notificación persistente para la aplicación de música o no. Preferiría tocar en mi Moto 360 o en el teléfono. El HTC A9 es igual de quisquilloso. El Nexus 5X a veces no iniciará la copia de seguridad de la música con la notificación persistente, pero a veces lo hará sin una. Se reproducirá el Samsung S6 edge, pero a veces, en lugar de reproducir la aplicación de música activa más recientemente, volverá a la aplicación de música precargada.

Hay una palabra que se repite aquí: a veces. Esto se debe a que este es un problema que tiene muchas variables: qué dispositivo Android está usando, qué dispositivo Bluetooth está usando, qué versión de Android y Bluetooth tienen sus dispositivos, qué aplicación de música está intentando reproducir, en qué entorno se encuentra, etc. Esas son muchas cosas que contribuyen a un problema aparentemente simple de botones que no funcionan cada vez que los presiona.

Entonces, ¿qué está pasando realmente aquí? Bueno, la respuesta se pone un poco, ok, mucho, técnica.

Cuando presiona el botón, Android lo interpreta y lo transmite a través del sistema a través de KeyEvents. El siguiente botón de su auricular se interpreta y se entrega como KEYCODE_MEDIA_NEXT a través de KeyEvent. Hay una gran variedad de valores que se pueden extraer para diferentes botones, o incluso para el mismo botón. El botón de reproducción en la mayoría de los auriculares también es el botón de pausa, por lo que la tecla podría devolver KEYCODE_MEDIA_PAUSE, KEYCODE_MEDIA_PLAY, o el KEYCODE_MEDIA_PLAY_PAUSE mucho más probable dependiendo del dispositivo y su estado actual. Por cierto, si alguna vez presionó pausa y la música comenzó en otro lugar mientras lo que estaban viendo / escuchando en pausa, este es el KeyEvent a quien culpar, porque fue recibido y actuado por dos aplicaciones.

Una vez que se interpretan los KeyEvents, aún deben ser escuchados por una aplicación de música que esté escuchando los botones de medios a través de una intención de BroadcastReceiver. Después de todo, una aplicación no puede actuar en un KeyEvent si no puede verla. Si algo impide que el receptor en una aplicación reciba presiones de botón, puede estropear los controles de reproducción de varias maneras, incluido el problema intermitente que describí anteriormente. Si una aplicación cancela su BroadcastReceiver demasiado rápido cuando pierde Audio Focus (el método a través del cual Android determina qué aplicaciones pueden reproducir audio en un momento dado), entonces cuando pausa su música, puede perder la escucha y no escuchar el botón presionando para comenzar a jugar de nuevo. Es por eso que es importante que las aplicaciones de medios manejen tanto Audio Focus como su BroadcastReceiver correctamente para que, incluso cuando un dispositivo haya perdido el primero, no pierda el último.

Mucho de esto se reduce a qué tan bien está programada su aplicación de música y qué botones multimedia está transmitiendo su dispositivo cuando presiona un botón en su auricular. Esto también significa que incluso si los controles de reproducción son consistentes cuando compra un dispositivo, pueden romperse por actualizaciones de la aplicación o actualizaciones del sistema que cambian la rapidez con la que deja de escuchar.

En el caso de aplicaciones como Google Play Music, las actualizaciones que rompen las cosas parecen ser cada vez más frecuentes. Si bien la mayoría de los descansos se arreglan rápidamente, otros pueden tardar meses en arreglarse. Los problemas intermitentes, como que su música no se inicia correctamente en Bluetooth, pueden ser difíciles de registrar e identificar adecuadamente, lo que ralentiza aún más una posible solución.

Si las aplicaciones de música no tienen foco de audio y no se ejecutan como servicios en primer plano (si la notificación persistente para el reproductor multimedia no está allí), existe la posibilidad de que el sistema Android (más específicamente Doze) o el llamado "recurso -saving "podrían matar la aplicación para liberar memoria para otras actividades. Cuando eso sucede, presionar play podría no hacer nada porque no hay receptores abiertos y escuchando comandos.

Ahora, así como hay varias cosas que podrían romper sus controles de reproducción, también hay opciones para tratar de arreglarlo.

La primera solución es un poco extrema, pero una de las pocas que los usuarios podrían implementar hoy en sus teléfonos actuales sin ninguna alteración de la raíz del software. Usando aplicaciones como Tasker y AutoInput, podemos detectar la presión del botón, suprimir la acción KeyEvent original y luego ejecutar un comando más especializado (y más consistente) dirigido directamente a una aplicación. Por ejemplo, en lugar de que el botón de reproducción sea un comando genérico de reproducción de medios que podría ser recogido o ignorado por docenas de servicios de medios, podríamos reasignarlo como un comando de alternar reproducción / pausa específico para Google Play Music para que otras aplicaciones no lo hagan. comenzar en su lugar.

Esto puede ser tedioso para programar, y al suprimir la acción original y reemplazarla, rompemos el botón de pausa nativo que podríamos querer usar en otras aplicaciones como YouTube o Netflix. En resumen, no es una gran solución para usuarios no técnicos o usuarios que usan una variedad de aplicaciones de medios.

Muchos teléfonos incluyen una gran cantidad de acciones de gestos y botones que puede activar o desactivar en Configuración, como tocar dos veces para activar o presionar dos veces Inicio / encendido para la cámara. Si bien agregar controles Bluetooth a esta lista puede alargarlo y complicarlo, si el sistema Android reconociera y dirija el KeyEvent a una aplicación específica en lugar de transmitir una señal genérica a cualquier receptor que esté (o no) escuchando, podríamos garantizar la coherencia. Hemos visto esto en dispositivos anteriores, por ejemplo, abriendo Moto Assist para encender una aplicación de música designada cuando se conecta al Bluetooth de su automóvil.

Cambiar la forma en que Android maneja los botones de medios, y se ocupa de las entradas de botones en general, ya que los controladores y teclados Bluetooth tienen sus propios problemas, podría crear tantos problemas nuevos como lo resuelva, pero teniendo en cuenta la cantidad de lugares donde las cosas pueden ir, y hacer, ir mal en el sistema actual, podría valer la pena romper los huevos para hacer una nueva tortilla.

Al final del día, los usuarios cotidianos no quieren profundizar en comandos clave, receptores y qué aplicación tiene enfoque de audio en este momento. Queremos que nuestro enfoque esté en la música en sí y a dónde nos lleve. Y si no puedo encender la música que me mantiene cuerda en lugares ruidosos y llenos de gente en el primer intento, no soy una chica feliz. Y apuesto a que no soy el único.

Podemos ganar una comisión por compras usando nuestros enlaces. Aprende más.