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.
Odpowiedzi:
Spróbuj wyłączyć wszelkie aplikacje lub sprzęt, który zużywa dużo zasobów telefonu. Wyłącz GPS, WIFI, usługę sieciową i przyciemnij podświetlenie. Zamknij także wszelkie inne uruchomione aplikacje niż te, których potrzebujesz do odtwarzania muzyki. Jeśli to nadal nie działa, urządzenie może nie mieć wystarczającej ilości pamięci.
źródło
Zwiększ swój
Audio Buffer
rozmiar.Używam PlayerPro Music Player z pakietem DSP. Pakiet DSP pozwala mi dostosować rozmiar bufora audio. Nigdy nie potrzebowałem używać tej funkcji, ale to ci pomoże.
Możesz także znaleźć inne odtwarzacze muzyczne obsługujące tę funkcję. Kluczem jest
Audio Buffer
.Alternatywnie możesz obniżyć jakość muzyki oraz obciążenie systemu.
źródło