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 :
- Iniciar WakeLock en modo "CPU encendida, pantalla apagada, teclado apagado
-
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?
0 votos
Por lo que puedo leer en sus comentarios adicionales: ninguno. Y tampoco he oído nunca que el X10 tenga un problema general de reproducción de audio.
0 votos
¿Incluso después de la actualización a Android 2.3?
0 votos
Tal vez los problemas que estás experimentando están localizados en tu modelo de dispositivo. Yo utilizo Android 2.3.6 en un Samsung YP-G70 y no experimento interrupciones ni cortes de ningún tipo, haga lo que haga.
0 votos
Tengo un problema muy similar a éste en un Nexus S con Jelly Bean 4.1.2. En mi caso la causa parece ser cualquier acceso a la red en segundo plano.
0 votos
Creo que esto es demasiado localizado, ya que sólo afecta al teléfono del OP, lo que el OP no proporcionó es qué aplicaciones de fondo ¿hay que correr? El sonido no es precisamente fluido para la latencia en las versiones de Android < Gingerbread... y eso es reconocido y conocido.
0 votos
Hay muchos programas en segundo plano, pero no creo que ninguno de ellos sea tan prioritario como para interrumpir el sonido. El alboroto de los procesos BG de baja prioridad no debería molestar la reproducción de la música de alta prioridad.
0 votos
También la cuestión principal es que la actualización de 2.1 a 2.3 rompió el sonido (con aproximadamente los mismos programas). /* En realidad he empezado a acostumbrarme a ignorar estoicamente el picado de la música... */