Когда я пытаюсь воспроизвести музыку на 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 при наличии фоновой нагрузки? Должен ли я сообщить об ошибке где-нибудь?
Обновление Нашел способ воспроизведения музыки. Неудобно, но без измельчения :
- Запустите WakeLock в режиме «CPU on, Screen Off, Keyboard off»
- Используйте 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
то есть «Установить приоритет холостого хода для всех процессов» делает музыку прекрасной, даже когда я {запускаю программы, блокирую экран, поворачиваю экран; она подключается к другим станциям мобильной сети} за счет некоторой задержки ввода в играх. Не знаю точно, почему это происходит.
Ответы:
Попробуйте отключить все приложения или оборудование, которые используют много ресурсов телефона. Выключите GPS, WIFI, Сетевой сервис и затемните подсветку. Также закройте все другие запущенные приложения, кроме тех, которые вам нужны для воспроизведения музыки. Если это все еще не работает, ваше устройство может не иметь достаточно памяти.
источник
Увеличьте свой
Audio Buffer
размер.Я использую PlayerPro Music Player с пакетом DSP. Пакет DSP позволяет мне настроить размер аудио буфера. Мне никогда не нужно было использовать эту функцию, но она поможет вам.
Вы также можете найти другие музыкальные плееры для поддержки этой функции. Ключ есть
Audio Buffer
.Кроме того, вы можете снизить качество музыки, а также нагрузку на систему.
источник