Khi tôi cố gắng phát nhạc trên Android 2.3 (sử dụng nhiều trình phát khác nhau, bao gồm PowerAmp) trên Sony Ericsson Xperia X10, tôi nhận được âm thanh không đáng tin cậy. Âm nhạc tạm dừng trong một thời gian ngắn, ví dụ, khi:
- Tôi nhấn nút nguồn (đặc biệt là lặp đi lặp lại) (
request_suspend_state: sleep;request_suspend_state: wakeup
bằng dmesg) - Khi tôi thấy tin nhắn như
send sigkill to 15497 (ndroid.settings), adj 8, size 6428
trong dmesg - Khi một số chương trình phản ứng với thay đổi hướng màn hình.
- Khi kết nối wifi được thiết lập, khi tôi buộc nó phải "liên kết lại"
- Khi tôi đi đến / từ ứng dụng từ màn hình chính (AWDLauncher), ngoại trừ đến / từ màn hình WidgetLocker.
- Khi tôi bật / tắt Chế độ trên máy bay.
- Khi màn hình tắt (khó chịu nhất)
Khi chỉ có cách phát nhạc thực sự ổn định là sử dụng StayAwake để bật hiển thị, tắt Wi-Fi, bật Chế độ trên máy bay và không chuyển đổi ứng dụng. Việc khởi động CPU như thế while true; do true; done
nào không ảnh hưởng đến việc băm nhỏ.
Và nó đã chơi tốt hơn hoặc ít hơn trên Android 2.1.
Quá trình "trung gian" (ghi vào / dev / msm_pcm thừng) có io thời gian thực và ưu tiên lập lịch, nhưng dù sao âm thanh cũng bị chói. Nếu tôi bắt đầu chơi từ bảng điều khiển với mplayer -ao pcm:file=/dev/msm_pcm_out
âm thanh nhỏ hơn (đáng chú ý là nó không bị gián đoạn bởi nút nguồn / tải các quá trình nặng), nhưng vẫn hoạt động không bình thường khi màn hình tắt (thậm chí ionice -c1 -p4 cat /dev/urandom > /dev/msm_pcm_out
là bị giật)
Khi tôi bắt đầu phát nhạc A bằng cách thông thường và nhạc B sử dụng mplayer để / dev / msm_pcm thừng (làm cho chúng bị trộn lẫn) âm nhạc A phát ra nhiều hơn bình thường và tôi thường nghe thấy B khi A bị chặt. Khi tôi tắt màn hình, cả hai A và B đều đồng bộ hóa (dừng B dẫn đến phát lại A tương đối trôi chảy hơn theo cách này).
Làm cách nào để phát nhạc trên Android một cách đáng tin cậy khi có tải nền? Tôi có nên báo cáo lỗi ở đâu đó không?
Cập nhật Tìm thấy một cách chơi nhạc. Bất tiện, nhưng không chặt :
- Bắt đầu WakeLock ở chế độ "CPU bật, Tắt màn hình, Tắt bàn phím"
- Sử dụng mplayer để phát nhạc bỏ qua 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)
Chơi mà không cắt bất kể tôi khởi động bao nhiêu ứng dụng, làm gì với chế độ Wifi, định hướng và máy bay. Ngay cả với thống đốc cpufreq "powersave" (mọi thứ rất chậm, nhưng âm nhạc vẫn chơi tốt). Vì vậy, phần cứng có đủ tài nguyên để chơi nó.
Cập nhật 2 Hình như đang làm
for i in `pgrep ''`; do schedtool -D $i; done
tức là "Đặt mức độ ưu tiên nhàn rỗi cho tất cả các quy trình" giúp âm nhạc phát tốt ngay cả khi tôi {khởi động chương trình, khóa màn hình, xoay màn hình; nó kết nối lại với các trạm mạng di động khác} với chi phí của một số độ trễ đầu vào trong trò chơi. Không biết chính xác tại sao nó xảy ra.