Wie kann man Android dazu bringen, Musik zuverlässig abzuspielen, ohne zu hacken?


10

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: wakeupin dmesg)
  • Wenn ich Nachrichten wie send sigkill to 15497 (ndroid.settings), adj 8, size 6428in 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; donehat 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_outweniger 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_outes 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 :

  1. Starten Sie WakeLock im Modus "CPU ein, Bildschirm aus, Tastatur aus"
  2. 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.


Welches Gerät hast du? Klingt so, als wäre es sehr ressourcenbeschränkt. Möglicherweise würde ein schnelles und leichtes benutzerdefiniertes ROM die Leistung verbessern.
Flow

Sony Ericsson Xperia X10. Was bedeutet "ressourcenbeschränkt"? Es sollte den Medien Vorrang vor den üblichen Aktivitäten einräumen und eine flüssige Wiedergabe unabhängig davon ermöglichen, wie viel Hintergrundlast vorhanden ist. Auch der Versuch, durch explizite Verwendung schwerer Anwendungen, die CPU und Speicher belasten, eine Last zu verursachen, führt nicht zu abgehacktem Audio, während nur das erneute Zuordnen von Wifi immer zu Chop führt. Auch es spielte mehr oder weniger gut auf Android 2.1
Vi0

Die Musik spielt das gleiche, auch wenn ich den Powersave-Cpufreq-Regler erzwinge (und die CPU-Auslastung beträgt in diesem Fall etwa 20%). Welche Ressourcen können knapp sein?
Vi0

Nach dem, was ich aus Ihren zusätzlichen Kommentaren lesen kann: keine. Und ich habe auch noch nie gehört, dass das X10 ein allgemeines Problem mit der Audiowiedergabe hat.
Flow

Einschließlich nach dem Update auf Android 2.3?
Vi0

Antworten:


0

Schalten Sie alle Anwendungen oder Hardware aus, die viele Ressourcen des Telefons verbrauchen. Schalten Sie GPS, WIFI und den Netzwerkdienst aus und dimmen Sie die Hintergrundbeleuchtung. Fahren Sie auch andere laufende Anwendungen als die zum Abspielen von Musik benötigten herunter. Wenn dies immer noch nicht funktioniert, verfügt Ihr Gerät möglicherweise nicht über genügend Speicher.


Sieht nach einem allgemeinen Rat aus, nicht nach einer Lösung / Problemumgehung für den Fehler. Ich habe verschiedene Modi ausprobiert (in Frage beschrieben). OOM Killer ist nur eines der Dinge, die den Fehler auslösen.
Vi0

0

Erhöhen Sie Ihre Audio BufferGröße.

Ich verwende den PlayerPro Music Player mit seinem DSP-Paket. Mit dem DSP-Paket kann ich die Größe des Audiopuffers anpassen. Ich musste diese Funktion nie verwenden, aber sie wird Ihnen helfen.

Sie können auch andere Musikplayer finden, die diese Funktion unterstützen. Der Schlüssel ist Audio Buffer.

Alternativ können Sie die Musikqualität sowie die Systemlast reduzieren.


Zumindest das Einstellen der maximalen Puffergröße im Mixzing Player hilft nicht.
Vi0

1
"Musikqualität sowie Systemlast reduzieren" -> Problemumgehung, nicht behoben. Ich habe bereits hackige Problemumgehungen (siehe "Updates")
Vi0
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.