Ketika saya mencoba memainkan musik di Android 2.3 (menggunakan berbagai pemain, termasuk PowerAmp) di Sony Ericsson Xperia X10, saya mendapatkan suara yang tidak dapat diandalkan. Musik berhenti sebentar, misalnya, ketika:
- Saya menekan tombol power (terutama berulang kali) (
request_suspend_state: sleep;request_suspend_state: wakeup
dalam dmesg) - Ketika saya melihat pesan seperti
send sigkill to 15497 (ndroid.settings), adj 8, size 6428
di dmesg - Ketika beberapa program bereaksi terhadap orientasi layar yang berubah.
- Ketika koneksi wifi terbentuk, ketika saya memaksanya untuk "menghubungkan kembali"
- Ketika saya pergi ke / dari aplikasi dari layar beranda (AWDLauncher), kecuali ke / dari layar WidgetLocker.
- Ketika saya mengaktifkan / menonaktifkan Mode Pesawat.
- Ketika layar mati (yang paling menjengkelkan)
Ketika satu-satunya cara yang sangat stabil untuk memutar musik adalah dengan menggunakan StayAwake untuk memaksa tampilan aktif, matikan Wi-Fi, nyalakan Mode Pesawat dan jangan beralih aplikasi. Memulai babi seperti CPU while true; do true; done
tidak memengaruhi pemotongan.
Dan itu bermain kurang lebih baik di Android 2.1.
Proses "mediaserv" (yang menulis ke / dev / msm_pcm_out) memiliki io dan penjadwalan prioritas waktu nyata, tetapi suara tetap berombak. Jika saya mulai bermain dari konsol dengan mplayer -ao pcm:file=/dev/msm_pcm_out
memotong suara kurang (terutama itu tidak terganggu oleh tombol power / memuat banyak proses berat), tetapi masih berperilaku tidak normal ketika layar mati (bahkan ionice -c1 -p4 cat /dev/urandom > /dev/msm_pcm_out
berombak)
Ketika saya memulai musik A dengan cara biasa dan musik B menggunakan mplayer ke / dev / msm_pcm_out (membuat mereka bercampur) musik A memotong lebih dari biasanya dan saya biasanya mendengar B ketika A sedang memotong. Ketika saya mematikan layar, kedua A dan B memotong dalam sinkronisasi (menghentikan B menyebabkan pemutaran A relatif lebih lancar dengan cara ini).
Bagaimana cara memainkan musik di Android secara andal di hadapan beban latar belakang? Haruskah saya melaporkan bug di suatu tempat?
Perbarui Menemukan cara memainkan musik. Nyaman, tetapi tanpa memotong :
- Mulai WakeLock dalam mode "CPU on, Screen Off, Keyboard off"
- Gunakan mplayer untuk memutar musik yang melewati 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)
Dimainkan tanpa memotong tidak peduli berapa banyak aplikasi yang saya mulai, apa yang dilakukan dengan Wifi, orientasi dan mode pesawat. Bahkan dengan gubernur cpufreq "powersave" (semuanya sangat lambat, tetapi musik dimainkan dengan baik). Jadi perangkat keras memiliki sumber daya yang cukup untuk memainkannya.
Perbarui 2 Sepertinya sedang dilakukan
for i in `pgrep ''`; do schedtool -D $i; done
yaitu "Tetapkan Prioritas menganggur untuk semua proses" membuat musik diputar dengan baik bahkan ketika saya {memulai program, mengunci layar, memutar layar; menghubungkan kembali ke stasiun jaringan seluler lain} dengan mengorbankan beberapa input lag dalam permainan. Tidak tahu persis mengapa itu terjadi.