Jak sprawić, by Android odtwarzał muzykę niezawodnie, bez siekania?

10

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: wakeupw dmesg)
  • Kiedy widzę wiadomości jak send sigkill to 15497 (ndroid.settings), adj 8, size 6428w 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; donenie 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_outmniej 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_outjest 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 :

  1. Uruchom WakeLock w trybie „CPU on, Screen Off, Keyboard off”
  2. 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.

Vi0
źródło
Jakie masz urządzenie? Wygląda na to, że jest bardzo ograniczony pod względem zasobów. Może szybki i lekki niestandardowy ROM poprawiłby wydajność.
Flow
Sony Ericsson Xperia X10. Co oznacza „ograniczone zasoby”? Powinien on nadawać priorytet mediom w porównaniu ze zwykłymi czynnościami, umożliwiając płynne odtwarzanie niezależnie od ilości obecnego obciążenia tła. Również próba spowodowania obciążenia poprzez jawne użycie ciężkich aplikacji zapychających procesor i pamięć nie prowadzi do nierównego dźwięku, a jedynie ponowne powiązanie Wi-Fi zawsze powoduje przerywanie . Również grała mniej więcej dobrze na Androidzie 2.1
Vi0
Muzyka gra tak samo, nawet ja wymuszam powerave cpufreq gubernatora (a nieładne obciążenie procesora wynosi w tym przypadku około 20%). Jakie zasoby mogą być krótkie?
Vi0,
Z tego, co mogę przeczytać z twoich dodatkowych komentarzy: brak. Nigdy też nie słyszałem, że X10 ma ogólny problem z odtwarzaniem dźwięku.
Flow
W tym po aktualizacji do Androida 2.3?
Vi0,

Odpowiedzi:

0

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.

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
źródło
Wygląda jak ogólna rada, a nie rozwiązanie / obejście błędu. Próbowałem różnych trybów (opisanych w pytaniu). OOM Killer to tylko jedna z rzeczy, które powodują błąd.
Vi0,
0

Zwiększ swój Audio Bufferrozmiar.

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.

Android Quesito
źródło
Przynajmniej ustawienie maksymalnego rozmiaru bufora w odtwarzaczu Mixzing nie pomaga.
Vi0
1
„obniż jakość muzyki oraz obciążenie systemu” -> obejście, a nie naprawa. Mam już nieprzyzwoite obejścia (patrz „Aktualizacje”)
Vi0