Lorsque j'essaie de lire de la musique sur Android 2.3 (en utilisant divers lecteurs, y compris PowerAmp) sur Sony Ericsson Xperia X10, je n'obtiens pas un son fiable. La musique s'interrompt brièvement, par exemple lorsque:
- J'appuie sur le bouton d'alimentation (surtout à plusieurs reprises) (
request_suspend_state: sleep;request_suspend_state: wakeup
en dmesg) - Quand je vois des messages comme
send sigkill to 15497 (ndroid.settings), adj 8, size 6428
dans dmesg - Lorsqu'un programme réagit à une orientation d'écran modifiée.
- Lorsque la connexion wifi est établie, lorsque je la force à "se réassocier"
- Lorsque je vais vers / depuis l'application depuis l'écran d'accueil (AWDLauncher), sauf vers / depuis l'écran WidgetLocker.
- Lorsque j'active / désactive le mode avion.
- Lorsque l'écran est éteint (le plus ennuyeux)
Lorsque la seule façon vraiment stable de jouer de la musique est d'utiliser StayAwake pour forcer l'affichage, désactiver le Wi-Fi, activer le mode avion et ne pas changer d'application. Le démarrage de porcs CPU comme while true; do true; done
n'affecte pas le hachage.
Et ça jouait plus ou moins bien sur Android 2.1.
Le processus "mediaserv" (qui écrit dans / dev / msm_pcm_out) a une priorité io et de planification en temps réel, mais le son est de toute façon saccadé. Si je commence à jouer à partir de la console avec mplayer -ao pcm:file=/dev/msm_pcm_out
le son moins côtelé (notamment il n'est pas interrompu par le bouton d'alimentation / le chargement de lots de processus lourds), mais je ne me comporte toujours pas normalement lorsque l'écran est éteint (même ionice -c1 -p4 cat /dev/urandom > /dev/msm_pcm_out
saccadé)
Lorsque je démarre la musique A de la manière habituelle et la musique B en utilisant mplayer vers / dev / msm_pcm_out (en les mélangeant), la musique A coupe plus que d'habitude et j'entends habituellement B quand A est en hache. Lorsque j'éteins l'écran, les tronçons A et B sont synchronisés (l'arrêt de B entraîne une lecture relativement plus fluide de A de cette façon).
Comment jouer de la musique sur Android de manière fiable en présence d'une charge d'arrière-plan? Dois-je signaler un bug quelque part?
Mise à jour J'ai trouvé un moyen de jouer de la musique. Inconvénient, mais sans couper :
- Démarrez WakeLock en mode "CPU allumé, écran éteint, clavier éteint"
- Utilisez mplayer pour jouer de la musique en contournant 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)
Joue sans couper, peu importe le nombre d'applications que je démarre, que faire avec le Wifi, l'orientation et les modes avion. Même avec le gouverneur cpufreq "powersave" (tout est très lent, mais la musique joue bien). Le matériel a donc suffisamment de ressources pour y jouer.
Update 2 On dirait que faire
for i in `pgrep ''`; do schedtool -D $i; done
c'est-à-dire que "Définir la priorité au ralenti pour tous les processus" permet à la musique de jouer correctement même lorsque je {démarre des programmes, verrouille l'écran, fais pivoter l'écran; elle se reconnecte à d'autres stations du réseau mobile} au détriment d'un certain décalage d'entrée dans les jeux. Je ne sais pas exactement pourquoi cela se produit.