10 votos

¿Cómo hacer que Android reproduzca la música de forma fiable, sin cortarla?

Cuando intento reproducir música en Android 2.3 (usando varios reproductores, incluyendo PowerAmp) en el Sony Ericsson Xperia X10 no consigo un sonido fiable. La música se detiene por un corto tiempo, por ejemplo, cuando:

  • Presiono el botón de encendido (especialmente de forma repetida) ( request_suspend_state: sleep;request_suspend_state: wakeup en dmesg)
  • Cuando veo mensajes como send sigkill to 15497 (ndroid.settings), adj 8, size 6428 en dmesg
  • Cuando algún programa reacciona al cambio de orientación de la pantalla.
  • Cuando se establece la conexión wifi, cuando la fuerzo a "reasociarse"
  • Cuando voy a/desde la aplicación desde la pantalla de inicio (AWDLauncher), excepto de la pantalla de WidgetLocker.
  • Cuando activo/desactivo el modo avión.
  • Cuando la pantalla está apagada (lo más molesto)

Cuando la única forma realmente estable de reproducir música es usar StayAwake para forzar la visualización, apagar el Wi-Fi, activar el Modo Avión y no cambiar de aplicación. Iniciar los cerdos de la CPU como while true; do true; done no afecta al picado.

Y se reproducía más o menos bien en Android 2.1.

El proceso "mediaserv" (que escribe en /dev/msm_pcm_out) tiene prioridad de io y programación en tiempo real, pero el sonido es entrecortado de todos modos. Si empiezo a jugar desde la consola con mplayer -ao pcm:file=/dev/msm_pcm_out el sonido se pica menos (en particular, no se interrumpe por el botón de encendido / la carga de racimos de procesos pesados), pero todavía no se comportan normalmente cuando la pantalla está apagada (incluso ionice -c1 -p4 cat /dev/urandom > /dev/msm_pcm_out está entrecortado)

Cuando arranco la música A por la vía habitual y la música B usando mplayer a /dev/msm_pcm_out (consiguiendo que se mezclen) la música A se pica más de lo habitual y suelo escuchar B cuando A está en chop. Cuando apago la pantalla, tanto A como B se cortan de forma sincronizada (al detener B, la reproducción de A es relativamente más fluida).

¿Cómo reproducir música en Android de forma fiable en presencia de una carga de fondo? ¿Debo informar de un error en alguna parte?

Actualización Encontré una forma de tocar música. Inconveniente, pero sin cortar :

  1. Iniciar WakeLock en modo "CPU encendida, pantalla apagada, teclado apagado
  2. Utiliza mplayer para reproducir música sin pasar por Android:

    ionice -c1 -n4 \ schedtool -R -p 3 -e \ mplayer -really-quiet \ -af volume=-26 -quiet \ -ao pcm:file=/dev/msm_pcm_out,nowaveheader \ /mnt/sdcard/music/something.ogg

    (created script to start it easily, of course)

Juega sin picar por más aplicaciones que inicie, qué hacer con los modos Wifi, orientación y avión. Incluso con "powersave" cpufreq gobernador (todo muy lento, pero la música se reproduce bien). Así que el hardware tiene suficientes recursos para reproducirlo.

Actualización 2 Parece que se está haciendo

for i in `pgrep ''`; do schedtool -D $i; done

Por ejemplo, "Establecer prioridad de inactividad para todos los procesos" hace que la música se reproduzca bien incluso cuando {inicio programas, bloqueo de pantalla, giro de pantalla; se reconecta a otras estaciones de red móvil} a expensas de algún retraso de entrada en los juegos. No sé exactamente por qué sucede.

0 votos

¿Qué dispositivo tienes? Parece que está muy limitado en recursos. Tal vez una ROM personalizada rápida y ligera mejoraría el rendimiento.

0 votos

Sony Ericsson Xperia X10. ¿Qué significa "recursos limitados"? Debería priorizar los medios sobre las actividades habituales, permitiendo una reproducción fluida independientemente de la carga de fondo presente. También tratar de causar la carga mediante el uso explícito de aplicaciones pesadas acaparando la CPU y la memoria no conduce a audio entrecortado mientras que sólo la reasociación de Wifi siempre produce chuletas. También jugó más o menos bien en Android 2.1

0 votos

La música se reproduce igual aunque fuerce el powersave del gobernador cpufreq (y la carga no agradable de la CPU es de un 20% en este caso). ¿Qué recursos pueden ser cortos?

1voto

Intenta desactivar cualquier aplicación o hardware que utilice muchos recursos del teléfono. Apaga el GPS, el WIFI, el servicio de red y atenúa la luz de fondo. Apaga también cualquier otra aplicación que se esté ejecutando que no sea la que necesitas para reproducir música. Si esto sigue sin funcionar, es posible que tu dispositivo no tenga suficiente memoria.

0 votos

Parece un consejo general, no una solución/resolución al fallo. He probado varios modos (descritos en la pregunta). El asesino OOM es sólo una de las cosas que desencadenan el error.

1voto

S S Puntos 8975

Aumente su Audio Buffer tamaño.

Utilizo el reproductor de música PlayerPro con su paquete DSP. El paquete DSP me permite ajustar el tamaño del búfer de audio. Nunca he necesitado usar esta función, pero te ayudará.

También puedes encontrar otros reproductores de música que admitan esta función. La clave es Audio Buffer .

También puedes reducir la calidad de la música y la carga del sistema.

0 votos

Al menos el ajuste del tamaño máximo del buffer en el reproductor Mixzing no ayuda.

1 votos

"reducir la calidad de la música así como la carga del sistema" -> solución, no arreglo. Ya tengo soluciones rápidas (ver "Actualizaciones")

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X