Permanente tartamudeo de audio en LGE Nexus 4 con el Deezer Android SDK

La reproducción de audio se ha probado con éxito en Samsung Galaxy S3 y HTC One, pero se rompe gravemente en un LGE Nexus 4 con Android 4.4. Lo que sucede es que el audio perfectamente fino se puede escuchar por una fracción de segundo, luego hay unos segundos de silencio seguidos por otro pedazo corto de audio, luego silencio, y así va. Por lo tanto, parece que la lógica de streaming de audio termina en un eterno inicio-play-underrun-stop loop.

Cada segundo veo el siguiente aviso registrado:

12-09 00:55:56.982 10842-14365/com.soundrop.android W/AudioTrack﹕ releaseBuffer() track 0x7b03f4e0 name=s:176;n:2;f:-1 disabled due to previous underrun, restarting 12-09 00:55:57.583 10842-14367/com.soundrop.android W/AudioTrack﹕ releaseBuffer() track 0x7b03f4e0 name=s:176;n:2;f:-1 disabled due to previous underrun, restarting 12-09 00:55:58.594 10842-14369/com.soundrop.android W/AudioTrack﹕ releaseBuffer() track 0x7b03f4e0 name=s:176;n:2;f:-1 disabled due to previous underrun, restarting 12-09 00:55:59.595 10842-14371/com.soundrop.android W/AudioTrack﹕ releaseBuffer() track 0x7b03f4e0 name=s:176;n:2;f:-1 disabled due to previous underrun, restarting 12-09 00:56:02.047 10842-14379/com.soundrop.android W/AudioTrack﹕ releaseBuffer() track 0x7b03f4e0 name=s:176;n:2;f:-1 disabled due to previous underrun, restarting 

Esto me lleva a pensar en posibles diferencias de buffer de audio entre los dispositivos, así que hice algunas pruebas:

 HTC One (good playback): AudioTrack.getMinBufferSize(44100, STEREO, ENCODING_PCM_16BIT) => 16932 LGE Nexus 4 (bad playback): AudioTrack.getMinBufferSize(44100, STEREO, ENCODING_PCM_16BIT) => 7056 

Mi especulación es que el Deezer Android SDK establece un tamaño de búfer demasiado pequeño en este dispositivo en particular, ya que parece elegir un tamaño de búfer que es 10 veces el tamaño mínimo reportado.

ACTUALIZACIÓN: Acaba de reproducir el tartamudeo de audio en un HTC One con 4.4, donde getMinBufferSize () devuelve 16932 (como lo hizo en Android <4.4). Por lo tanto, este problema claramente no es específico del dispositivo, sino que está relacionado con los cambios de comportamiento específicos del sistema operativo que comienzan con KitKat.

    Este es un problema planteado por la actualización de Android 4.4. Algo en la implementación de AudioTrack ha cambiado y ha causado estos problemas de subutilización.

    Actualmente estamos trabajando en una solución a este problema y lo publicaremos lo antes posible.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.