Как заставить Android играть музыку надежно, не прерывая?

10

Когда я пытаюсь воспроизвести музыку на Android 2.3 (используя различные плееры, в том числе PowerAmp) на Sony Ericsson Xperia X10, я получаю ненадежный звук. Музыка останавливается на короткое время, например, когда:

  • Жму кнопку включения (особенно многократно) ( request_suspend_state: sleep;request_suspend_state: wakeupв dmesg)
  • Когда я вижу сообщения, как send sigkill to 15497 (ndroid.settings), adj 8, size 6428в dmesg
  • Когда какая-то программа реагирует на изменение ориентации экрана.
  • Когда соединение Wi-Fi установлено, когда я вынуждаю это "повторно связать"
  • Когда я захожу в / из приложения с домашнего экрана (AWDLauncher), кроме как из / в экран WidgetLocker.
  • Когда я включаю / отключаю режим полета.
  • Когда дисплей выключен (самый раздражающий)

Когда только действительно стабильный способ воспроизведения музыки - это использовать StayAwake для включения дисплея, выключения Wi-Fi, включения режима полета и не переключайте приложения. Запуск CPU, например while true; do true; done, не влияет на измельчение.

И он играл более или менее хорошо на Android 2.1.

Процесс mediaserv (который записывает в / dev / msm_pcm_out) имеет приоритет в реальном времени и приоритет планирования, но в любом случае звук прерывистый. Если я начинаю играть с консоли с mplayer -ao pcm:file=/dev/msm_pcm_outменьшим количеством звука (в частности, он не прерывается кнопкой питания / загрузкой групп тяжелых процессов), но все равно ведет себя не нормально, когда экран выключен (даже ionice -c1 -p4 cat /dev/urandom > /dev/msm_pcm_outпрерывистый)

Когда я запускаю музыку A обычным способом и музыку B, используя mplayer для / dev / msm_pcm_out (смешивая их), музыка A прерывается чаще, чем обычно, и я обычно слышу B, когда A находится в chop. Когда я выключаю экран, A и B синхронизируются (остановка B приводит к относительно более плавному воспроизведению A таким образом).

Как надежно воспроизводить музыку на Android при наличии фоновой нагрузки? Должен ли я сообщить об ошибке где-нибудь?

Обновление Нашел способ воспроизведения музыки. Неудобно, но без измельчения :

  1. Запустите WakeLock в режиме «CPU on, Screen Off, Keyboard off»
  2. Используйте mplayer для воспроизведения музыки в обход Android:
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)

Воспроизведение без прерывания независимо от того, сколько приложений я запускаю, что делать с режимами Wi-Fi, ориентации и полета. Даже с «powersave» cpufreq регулятором (все очень медленно, но музыка играет нормально). Таким образом, у оборудования достаточно ресурсов для его воспроизведения.

Обновление 2 Похоже, что делает

for i in `pgrep ''`; do schedtool -D $i; done

то есть «Установить приоритет холостого хода для всех процессов» делает музыку прекрасной, даже когда я {запускаю программы, блокирую экран, поворачиваю экран; она подключается к другим станциям мобильной сети} за счет некоторой задержки ввода в играх. Не знаю точно, почему это происходит.

VI0
источник
Какое устройство у вас есть? Похоже, это очень ограниченный ресурс. Возможно, быстрое и легкое пользовательское ПЗУ улучшит производительность.
Поток
Sony Ericsson Xperia X10. Что означает «ограниченный ресурс»? Следует отдавать приоритет мультимедиа по сравнению с обычными действиями, позволяя плавно воспроизводить независимо от того, какая фоновая загрузка присутствует. Также попытка вызвать нагрузку, явно используя тяжелые приложения, загружающие процессор и память, не приводит к прерывистому звуку, в то время как просто повторная привязка Wi-Fi всегда приводит к прерыванию . Также он играл более или менее хорошо на Android 2.1
Vi0
Музыка воспроизводит то же самое, даже если принудительно установить регулятор PowerSpureFireQ (и при этом загрузка процессора не очень приятная - в этом случае около 20%). Какие ресурсы могут быть короткими?
Vi0
Из того, что я могу прочитать из ваших дополнительных комментариев: нет. И я также никогда не слышал, чтобы у X10 была общая проблема с воспроизведением звука.
Поток
В том числе после обновления до Android 2.3?
Vi0

Ответы:

0

Попробуйте отключить все приложения или оборудование, которые используют много ресурсов телефона. Выключите GPS, WIFI, Сетевой сервис и затемните подсветку. Также закройте все другие запущенные приложения, кроме тех, которые вам нужны для воспроизведения музыки. Если это все еще не работает, ваше устройство может не иметь достаточно памяти.

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
источник
Похоже, общий совет, а не решение / обход ошибки. Я пробовал различные режимы (описано в вопросе). OOM killer - это только одна из причин, которые вызывают ошибку.
Vi0
0

Увеличьте свой Audio Bufferразмер.

Я использую PlayerPro Music Player с пакетом DSP. Пакет DSP позволяет мне настроить размер аудио буфера. Мне никогда не нужно было использовать эту функцию, но она поможет вам.

Вы также можете найти другие музыкальные плееры для поддержки этой функции. Ключ есть Audio Buffer.

Кроме того, вы можете снизить качество музыки, а также нагрузку на систему.

Android Quesito
источник
По крайней мере, установка максимального размера буфера в Mixzing Player не помогает.
Vi0
1
«снизить качество музыки, а также нагрузку на систему» ​​-> обходной путь, а не исправление. У меня уже есть хакерские обходные пути (см. «Обновления»)
Vi0