ANDROID APP
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
154 บทที่ 6 เทคนิคการทำางานร่วมกับมัลติมีเดีย<br />
เสียง<br />
การบันทึกและเล่นข้อมูลเสียงจะมีเฟรมเวิร์คอยู่ 2 ชนิดที่เรียกใช้งานได้ ซึ่งการเลือกใช้นั้นจะ<br />
ขึ้นอยู่กับประเภทการทำงานของแอพ ซึ่งได้แก่<br />
m MediaPlayer/MediaRecorder – เมธอดมาตรฐานที่ใช้จัดการข้อมูลเสียง ซึ่งจะอยู่ในรูป<br />
ของไฟล์หรือข้อมูลแบบสตรีมก็ได้เวลาทำงานเฟรมเวิร์คนี้จะสร้างเธรดเป็นของตัวเอง<br />
m AudioTrack/AudioRecorder – เฟรมเวิร์คชนิดนี้สามารถเข้าถึงข้อมูลเสียงแบบ Raw<br />
ได้โดยตรง โดยจะทำงานอยู่บนหน่วยความจำ และจะส่งข้อมูลไปยังส่วนบัฟเฟอร์เมื่ออยู่<br />
ในสถานะพร้อมใช้งานโดยไม่จำเป็นต้องจัดเก็บอยู่ในรูปของไฟล์ก่อนใช้งานได้<br />
เวลาทำงานเฟรมเวิร์คนี้จะไม่สร้างเธรดของตัวเอง<br />
การใช้งานเมธอดเหล่านี้จะกล่าวถึงในหัวข้อถัดไป<br />
กรรมวิธี: การสั่งให้เล่นไฟล์เสียงที่เลือกไว้<br />
เราจะใช้คลาส MediaRecorder และ MediaPlayer ในการบันทึกและเล่นข้อมูลเสียง<br />
และข้อมูลวิดีโอ ซึ่งในหัวข้อนี้เราจะทดลองการใช้งานร่วมกับข้อมูลเสียง โดยมีขั้นตอนการทำงานดังนี้<br />
1. สร้างอินสแตนซ์จากคลาส MediaPlayer<br />
MediaPlayer m_mediaPlayer = new MediaPlayer();<br />
2. กำหนดแหล่งของข้อมูลที่จะใช้งาน ซึ่งสามารถสร้างจากข้อมูลเสียงแบบ Raw ได้<br />
m_mediaPlayer = MediaPlayer.create(this, R.raw.my_music);<br />
นอกเหนือจากนั้น เราสามารถใช้ข้อมูลประเภทสตรีมได้เช่นกัน แต่จะต้องใช้คำสั่ง<br />
เพิ่มเติมเพื่อเตรียมการทำงานดังนี้<br />
m_mediaPlayer.setDataSource(path);<br />
m_mediaPlayer.prepare();<br />
ในการทำงานของชุดคำสั่งนั้น เราจะต้องใช้คำสั่ง try-catch มาครอบไว้เพื่อป้องกันข้อ<br />
ผิดพลาดที่อาจเกิดขึ้นในกรณีที่ระบบหาแหล่งข้อมูลไม่พบ<br />
3. เริ่มต้นเล่นข้อมูลเสียง<br />
m_mediaPlayer.start();<br />
4. เมื่อเล่นข้อมูลเสียงเสร็จแล้วก็จะหยุดการทำงานของ MediaPlayer และยกเลิก<br />
อินสแตนซ์เพื่อคืนหน่วยความจำกลับสู่ระบบ<br />
m_mediaPlayer.stop();<br />
m_mediaPlayer.release();<br />
ในหัวข้อนี้เรายังคงใช้คำสั่ง ListFiles จากในชุดคำสั่งที่ 6.3 ละ 6.4 มาใช้ในการสร้าง<br />
รายการของไฟล์ที่จะเอามาเล่น ในการทำงานนี้เราจะเก็บไฟล์เสียงที่จะใช้ไว้ในไดเร็กทอรี /sdcard/<br />
music/ ซึ่งไดเร็กทอรีนี้สามารถเปลี่ยนในภายหลังได้ตามความต้องการ<br />
เมื่อคำสั่ง ListFiles ได้ส่งค่าของไฟล์ที่ต้องการจะเล่นกลับมายังระบบแล้ว เราก็จะเริ่มต้น<br />
การทำงานของ MediaPlayer และสั่งให้เมธอด startMP() เริ่มทำงาน โดยหลังจากเริ่มทำงานแล้ว<br />
จะปรากฏปุ่มบนจอภาพ ซึ่งแสดงข้อความบนปุ่มว่า Pause