Kiedy próbuję odtwarzać muzykę na Androidzie 2.3 (przy użyciu różnych odtwarzaczy, w tym PowerAmp) na Sony Ericsson Xperia X10, nie słyszę niezawodnego dźwięku. Muzyka zatrzymuje się na krótki czas, na przykład gdy:
- Naciskam przycisk zasilania (szczególnie wielokrotnie) (
request_suspend_state: sleep;request_suspend_state: wakeup
w dmesg) - Kiedy widzę wiadomości jak
send sigkill to 15497 (ndroid.settings), adj 8, size 6428
w dmesg - Gdy jakiś program reaguje na zmienioną orientację ekranu.
- Po ustanowieniu połączenia Wi-Fi, gdy zmuszam go do „ponownego skojarzenia”
- Kiedy idę do / z aplikacji z ekranu głównego (AWDLauncher), z wyjątkiem do / z ekranu WidgetLocker.
- Kiedy włączam / wyłączam tryb samolotowy.
- Gdy wyświetlacz jest wyłączony (najbardziej denerwujące)
Gdy jedynym naprawdę stabilnym sposobem odtwarzania muzyki jest użycie StayAwake w celu wymuszenia włączenia wyświetlacza, wyłączenia Wi-Fi, włączenia trybu samolotowego i nie przełączania aplikacji. Uruchomienie taktu procesora jak while true; do true; done
nie wpływa na siekanie.
I grało mniej więcej dobrze na Androidzie 2.1.
Proces „mediaserv” (zapisujący do / dev / msm_pcm_out) ma priorytet w czasie rzeczywistym i harmonogramie, ale i tak dźwięk jest nierówny. Jeśli zacznę grać z konsoli mplayer -ao pcm:file=/dev/msm_pcm_out
mniej przerywając dźwięk (zwłaszcza nie zostanie to przerwane przez przycisk zasilania / ładowanie wiązek ciężkich procesów), ale nadal nie zachowuję się normalnie, gdy ekran jest wyłączony (nawet ionice -c1 -p4 cat /dev/urandom > /dev/msm_pcm_out
jest niepewny)
Kiedy uruchamiam muzykę A w zwykły sposób i muzykę B za pomocą mplayera do / dev / msm_pcm_out (zmiksowanie) muzyki A przycina się bardziej niż zwykle i zwykle słyszę B, gdy A jest przerywany. Kiedy wyłączam ekran, zarówno A, jak i B przerywają synchronizację (zatrzymanie B prowadzi do relatywnie bardziej płynnego odtwarzania A w ten sposób).
Jak niezawodnie odtwarzać muzykę na Androidzie przy obciążeniu tła? Czy powinienem gdzieś zgłosić błąd?
Aktualizacja Znaleziono sposób odtwarzania muzyki. Niewygodne, ale bez siekania :
- Uruchom WakeLock w trybie „CPU on, Screen Off, Keyboard off”
- Użyj mplayera, aby odtwarzać muzykę z pominięciem Androida:
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)
Gra bez siekania bez względu na to, ile aplikacji uruchamiam, co robię z Wi-Fi, orientacją i trybami samolotowymi. Nawet z gubernatorem „powersave” cpufreq (wszystko bardzo wolno, ale muzyka gra dobrze). Sprzęt ma więc wystarczającą ilość zasobów, aby go odtworzyć.
Aktualizacja 2 Wygląda na robienie
for i in `pgrep ''`; do schedtool -D $i; done
tzn. „Ustaw priorytet bezczynności dla wszystkich procesów” sprawia, że odtwarzanie muzyki jest prawidłowe, nawet gdy {uruchamiam programy, blokuję ekran, obracam ekran; łączy się ponownie z innymi mobilnymi stacjami sieciowymi} kosztem pewnego opóźnienia wejściowego w grach. Nie wiem dokładnie, dlaczego tak się dzieje.