¿Cómo hacer que Android reproduzca música de manera confiable, sin cortar?

10

Cuando intento reproducir música en Android 2.3 (usando varios reproductores, incluido PowerAmp) en Sony Ericsson Xperia X10, no obtengo un sonido confiable. La música se detiene brevemente, por ejemplo, cuando:

  • Presiono el botón de encendido (especialmente repetidamente) ( request_suspend_state: sleep;request_suspend_state: wakeupen dmesg)
  • Cuando veo mensajes como send sigkill to 15497 (ndroid.settings), adj 8, size 6428en dmesg
  • Cuando algún programa reacciona a la orientación cambiada 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 a / desde la pantalla WidgetLocker.
  • Cuando habilito / deshabilito 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 CPU Hogs como while true; do true; doneno afecta el corte.

Y estaba jugando más o menos bien en Android 2.1.

El proceso "mediaserv" (que escribe en / dev / msm_pcm_out) tiene prioridad de programación y de io en tiempo real, pero el sonido es irregular de todos modos. Si comienzo a jugar desde la consola con mplayer -ao pcm:file=/dev/msm_pcm_outel sonido picado menos (en particular, no se interrumpe con el botón de encendido / cargando racimos de procesos pesados), pero aún no se comporta normalmente cuando la pantalla está apagada (incluso ionice -c1 -p4 cat /dev/urandom > /dev/msm_pcm_outestá entrecortada)

Cuando comienzo la música A de la manera habitual y la música B usando mplayer para / dev / msm_pcm_out (mezclándolas), la música A suena más de lo normal y generalmente escucho B cuando A está en chop. Cuando apago la pantalla, tanto A como B se sincronizan (detener B conduce a una reproducción relativamente más fluida de A de esta manera).

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

Actualización Se encontró una forma de reproducir música. Inconveniente, pero sin cortar :

  1. Inicie WakeLock en modo "CPU encendida, pantalla apagada, teclado apagado"
  2. Use 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 cortar, no importa cuántas aplicaciones inicie, qué hago con Wifi, orientación y modos de avión. Incluso con el gobernador cpufreq "powersave" (todo muy lento, pero la música suena bien). Entonces el hardware tiene suficientes recursos para jugarlo.

Actualización 2 Parece que hacer

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

es decir, "Establecer prioridad de inactividad para todos los procesos" hace que la música suene bien incluso cuando yo {inicio programas, bloqueo de pantalla, girar 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.

Vi0
fuente
¿Qué dispositivo tiene usted? Parece que tiene muchos recursos limitados. Tal vez una ROM personalizada rápida y ligera mejoraría el rendimiento.
Flujo
Sony Ericsson Xperia X10. ¿Qué significa "recursos limitados"? Debe priorizar los medios sobre las actividades habituales, permitiendo una reproducción fluida independientemente de la cantidad de carga de fondo presente. Además, tratar de causar carga mediante el uso explícito de aplicaciones pesadas que acaparan la CPU y la memoria no conduce a un audio entrecortado, mientras que la reasociación de Wifi siempre produce picado. También jugó más o menos bien en Android 2.1
Vi0
La música suena igual incluso si forzo el regulador Powerpu cpufreq (y la carga no agradable de la CPU es aproximadamente del 20% en este caso). ¿Qué recursos pueden ser cortos?
Vi0
Por lo que puedo leer de sus comentarios adicionales: ninguno. Y tampoco he oído nunca que el X10 tenga un problema general con la reproducción de audio.
Flujo el
¿Incluso después de la actualización a Android 2.3?
Vi0

Respuestas:

0

Intente apagar cualquier aplicación o hardware que use muchos de los recursos del teléfono. Apague el GPS, WIFI, el servicio de red y atenúe la luz de fondo. También cierre cualquier otra aplicación en ejecución que no sea la que necesita para reproducir música. Si esto aún no funciona, es posible que su dispositivo no tenga suficiente memoria.

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
fuente
Parece un consejo general, no una solución / solución al error. Intenté varios modos (descritos en la pregunta). OOM killer es solo una de las cosas que desencadenan el error.
Vi0
0

Aumenta tu Audio Buffertalla.

Yo uso PlayerPro Music Player con su paquete DSP. El paquete DSP me permite ajustar el tamaño del búfer de audio. Nunca necesité usar esta función, pero te ayudará.

También puede encontrar otros reproductores de música para admitir esta función. La clave es Audio Buffer.

Alternativamente, puede reducir la calidad de la música y la carga del sistema.

Android Quesito
fuente
Al menos establecer el tamaño máximo de búfer en el reproductor Mixzing no ayuda.
Vi0
1
"reducir la calidad de la música, así como la carga del sistema" -> solución alternativa, no corregir. Ya tengo soluciones alternativas (ver "Actualizaciones")
Vi0