เมื่อฉันพยายามเล่นเพลงบน 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 - เมื่อบางโปรแกรมตอบสนองต่อการวางแนวหน้าจอที่เปลี่ยนไป
- เมื่อการเชื่อมต่อ wifi ได้รับการจัดตั้งขึ้นเมื่อฉันบังคับให้ "เชื่อมโยงใหม่"
- เมื่อฉันไปที่ / จากแอปพลิเคชันจากหน้าจอหลัก (AWDLauncher) ยกเว้นไปที่ / จากหน้าจอ WidgetLocker
- เมื่อฉันเปิด / ปิดโหมดเครื่องบิน
- เมื่อจอแสดงผลปิด (ที่น่ารำคาญที่สุด)
เมื่อวิธีเล่นเพลงที่เสถียรจริงๆคือใช้ StayAwake เพื่อบังคับให้แสดงผลปิด Wi-Fi เปิดโหมด Airplane และไม่สลับแอปพลิเคชั่น การเริ่ม CPU hogs เช่นwhile true; do true; done
นั้นจะไม่มีผลกับการสับ
และมันก็เล่นได้ดีขึ้นหรือน้อยลงบน Android 2.1
กระบวนการ "mediaserv" (ที่เขียนไปยัง / dev / msm_pcm_out) มี io แบบเรียลไทม์และลำดับความสำคัญของการกำหนดเวลา แต่เสียงจะเปลี่ยนแปลงเร็ว ถ้าฉันเริ่มเล่นจากคอนโซลด้วยmplayer -ao pcm:file=/dev/msm_pcm_out
เสียงสับน้อยลง (โดยเฉพาะอย่างยิ่งมันจะไม่ถูกขัดจังหวะด้วยปุ่มเปิด / โหลดที่อัดแน่นของกระบวนการหนัก) แต่ก็ยังทำงานไม่ปกติเมื่อปิดหน้าจอ (แม้ionice -c1 -p4 cat /dev/urandom > /dev/msm_pcm_out
จะขาด ๆ หาย ๆ )
เมื่อฉันเริ่มเพลง A ตามปกติและเพลง B ใช้ mplayer to / dev / msm_pcm_out (ผสมให้พวกเขา) เพลง A chops มากกว่าปกติและฉันมักจะได้ยิน B เมื่อ A อยู่ในสับ เมื่อฉันปิดหน้าจอทั้ง A และ B จะซิงค์กัน (การหยุด B นำไปสู่การเล่น A ด้วยวิธีนี้ค่อนข้างคล่องแคล่ว)
วิธีการเล่นเพลงบน Android ที่น่าเชื่อถือเมื่อมีการโหลดพื้นหลัง? ฉันควรรายงานข้อผิดพลาดที่ไหนสักแห่ง?
อัพเดทพบวิธีการเล่นเพลง ไม่สะดวก แต่ไม่มีการสับ :
- เริ่ม WakeLock ในโหมด "เปิด CPU, ปิดหน้าจอ, ปิดแป้นพิมพ์"
- ใช้ 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)
เล่นได้โดยไม่ต้องสับไม่ว่าฉันจะเริ่มใช้งานแอปพลิเคชั่นมากแค่ไหนโหมด Wifi การวางแนวและโหมดเครื่องบิน แม้จะมีผู้ว่าราชการ cpufreq "powersave" (ทุกอย่างช้ามาก แต่เพลงก็เล่นได้ดี) ดังนั้นฮาร์ดแวร์จึงมีทรัพยากรเพียงพอที่จะเล่น
อัปเดต 2 ดูเหมือนว่ากำลังทำอยู่
for i in `pgrep ''`; do schedtool -D $i; done
นั่นคือ "Set Idle priority สำหรับกระบวนการทั้งหมด" ทำให้เพลงเล่นได้ดีแม้เมื่อฉัน {เริ่มโปรแกรมล็อคหน้าจอหมุนหน้าจอมันเชื่อมต่อกับสถานีเครือข่ายมือถืออื่น ๆ } โดยเสียค่าใช้จ่ายบางส่วนของความล่าช้าในเกม ไม่รู้ว่าทำไมมันเกิดขึ้น