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