Wenn ich versuche, Musik auf Android 2.3 (mit verschiedenen Playern, einschließlich PowerAmp) auf dem Sony Ericsson Xperia X10 abzuspielen, erhalte ich keinen zuverlässigen Sound. Musik pausiert für kurze Zeit, zum Beispiel wenn:
- Ich drücke den Netzschalter (besonders wiederholt) (
request_suspend_state: sleep;request_suspend_state: wakeup
in dmesg) - Wenn ich Nachrichten wie
send sigkill to 15497 (ndroid.settings), adj 8, size 6428
in dmesg sehe - Wenn ein Programm auf eine veränderte Bildschirmausrichtung reagiert.
- Wenn eine WLAN-Verbindung hergestellt wird, wenn ich sie zwinge, "neu zuzuordnen"
- Wenn ich vom Startbildschirm (AWDLauncher) zur / von der Anwendung gehe, außer zum / vom WidgetLocker-Bildschirm.
- Wenn ich den Flugzeugmodus aktiviere / deaktiviere.
- Wenn das Display ausgeschaltet ist (am ärgerlichsten)
Wenn die einzige wirklich stabile Möglichkeit zum Abspielen von Musik darin besteht, mit StayAwake die Anzeige zu erzwingen, das WLAN auszuschalten, den Flugzeugmodus einzuschalten und keine Anwendungen zu wechseln. Das Starten von CPU-Schweinen wie while true; do true; done
hat keinen Einfluss auf das Zerhacken.
Und es lief mehr oder weniger gut auf Android 2.1.
Der "mediaserv" -Prozess (der in / dev / msm_pcm_out schreibt) hat Echtzeit-Io und Planungspriorität, aber der Sound ist trotzdem abgehackt. Wenn ich anfange, von der Konsole aus mit mplayer -ao pcm:file=/dev/msm_pcm_out
weniger Sound-Chop zu spielen (insbesondere wird es nicht durch den Netzschalter unterbrochen / viele schwere Prozesse werden geladen), verhalte ich mich aber immer noch nicht normal, wenn der Bildschirm ausgeschaltet ist (auch wenn ionice -c1 -p4 cat /dev/urandom > /dev/msm_pcm_out
es abgehackt ist).
Wenn ich Musik A auf übliche Weise starte und Musik B mit mplayer zu / dev / msm_pcm_out (um sie zu mischen), hackt Musik A mehr als gewöhnlich und ich höre normalerweise B, wenn A hackt. Wenn ich den Bildschirm ausschalte, werden sowohl A als auch B synchronisiert (das Stoppen von B führt auf diese Weise zu einer relativ flüssigeren Wiedergabe von A).
Wie kann man Musik auf Android bei Hintergrundlast zuverlässig abspielen? Soll ich irgendwo einen Fehler melden?
Update Eine Möglichkeit zum Abspielen von Musik gefunden. Unbequem, aber ohne zu hacken :
- Starten Sie WakeLock im Modus "CPU ein, Bildschirm aus, Tastatur aus"
- Verwenden Sie mplayer, um Musik unter Umgehung von Android abzuspielen:
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)
Spielt ohne zu hacken, egal wie viele Anwendungen ich starte, was mit Wifi, Orientierung und Flugzeugmodi zu tun hat. Auch mit "Powersave" Cpufreq Governor (alles sehr langsam, aber Musik spielt gut). Die Hardware verfügt also über genügend Ressourcen, um sie abzuspielen.
Update 2 Sieht so aus
for i in `pgrep ''`; do schedtool -D $i; done
Das heißt, "Leerlaufpriorität für alle Prozesse festlegen" sorgt dafür, dass Musik auch dann gut abgespielt wird, wenn ich {Programme starte, Bildschirm sperre, Bildschirm drehe; sie stellt die Verbindung zu anderen Mobilfunkstationen wieder her} auf Kosten einer gewissen Verzögerung bei der Eingabe in Spielen. Ich weiß nicht genau, warum es passiert.