ANDROID APP
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
2. เริ่มต้นบันทึก โดยเริ่มการทำงานของ AudioRecord<br />
3. อ่านข้อมูลเสียงเข้าสู่หน่วยความจำไว้ในตัวแปร audioData[] ด้วยคำสั่งนี้<br />
read(short[] audioData, int offsetInShorts, int sizeInShorts)<br />
read(byte[] audioData, int offsetInBytes, int sizeInBytes)<br />
read(ByteBuffer audioData, int sizeInBytes)<br />
4. หยุดการบันทึก<br />
ในตัวอย่างนี้ เราจะบันทึกข้อมูลเสียงจากไมโครโฟนที่ติดตั้งอยู่ในอุปกรณ์แอนดรอยด์ลงไปยัง<br />
บัฟเฟอร์ myRecordedAudio ซึ่งมีขนาดของข้อมูลเป็น short[] (เพื่อรองรับขนาดของข้อมูลแบบ<br />
16 บิต) เรากำหนดให้ผสมคลื่นความถี่เสียงด้วยอัตรา 11,025 รอบต่อวินาที (Hz) และขนาดของ<br />
บัฟเฟอร์รองรับที่ 10,000 รอบต่อวินาที<br />
159<br />
m ขนาดของบัฟเฟอร์ – กำหนดค่าของบัฟเฟอร์ที่จะใช้ในการทำงาน ซึ่งจะใช้กับข้อมูล<br />
ประเภทไฟล์หรือข้อมูลสตรีม หน่วยของบัฟเฟอร์จะมีขนาดเป็นไบต์ โดยกำหนดให้มี<br />
ค่าสูงกว่าค่าของ getMinBufferSize()<br />
short[] myRecordedAudio = new short[10000];<br />
AudioRecord audioRecord = new AudioRecord(<br />
MediaRecorder.AudioSource.MIC, 11025,<br />
AudioFormat.CHANNEL_IN_MONO,<br />
AudioFormat.ENCODING_PCM_16BIT, 10000);<br />
audioRecord.startRecording();<br />
audioRecord.read(myRecordedAudio, 0, 10000);<br />
audioRecord.stop();<br />
เสียง<br />
ขั้นตอนในการเล่นข้อมูลเสียงที่บันทึกไว้มีดังนี้<br />
1. สร้างอินสแตนซ์ AudioTrack และกำหนดค่าดังนี้<br />
m ชนิดของสตรีม –ใช้คำสั่ง AudioManager.STREAM_MUSIC เพื่อจับข้อมูลเสียงจาก<br />
ไมโครโฟน หรือใช้เล่นเสียงไปยังลำโพง ข้อมูลสตรีมชนิดอื่นๆ ที่สามารถเลือกใช้ได้<br />
คือ STREAM_VOICE_CALL, STREAM_SYSTEM, STREAM_RING และ STREAM_<br />
ALARM<br />
m การผสมความถี่เสียง – ถ้าต้องการคุณภาพเสียงใกล้เคียงกับ CD ก็จะใช้ค่าเป็น<br />
44100 Hz หรือกำหนดเป็น 22050 Hz หรือ 11025 Hz ในระดับคุณภาพที่รองลงมา<br />
m ช่องสัญญาณเสียง – ใช้คำสั่ง AudioFormat.CHANNEL_OUT_STEREO เพื่อบันทึก<br />
เสียงแบบสเตอริโอ หรือใช้คำสั่ง AudioFormat.CHANNEL_OUT_MONO เพื่อบันทึก<br />
เสียงแบบโมโน และ CHANNEL_OUT_5POINT เพื่อบันทึกเสียงแบบเซอร์ราวด์<br />
m การเข้ารหัสข้อมูลเสียง – ใช้คำสั่ง AudioFormat.ENCODING_PCM_8BIT เพื่อเข้า<br />
รหัสข้อมูลแบบ 8 บิต หรือใช้คำสั่ง AudioFormat.ENCODING_PCM_16BIT<br />
เพื่อเข้ารหัสข้อมูลแบบ 16 บิต<br />
m ขนาดของบัฟเฟอร์ – กำหนดค่าของบัฟเฟอร์ที่จะใช้ในการทำงาน ซึ่งจะใช้งานกับ<br />
ข้อมูลประเภทไฟล์หรือข้อมูลสตรีม หน่วยของบัฟเฟอร์จะมีขนาดเป็นไบต์<br />
โดยกำหนดให้มีค่าสูงกว่าค่าของ getMinBufferSize()<br />
m ชนิดของบัฟเฟอร์ – ใช้คำสั่ง AudioTrack.MODE_STATIC สำหรับข้อมูลเสียงที่ไม่<br />
ยาวนักที่สามารถใส่ลงในหน่วยความจำได้ทั้งหมด ส่วนข้อมูลเสียงที่มีขนาดใหญ่เราจะ<br />
ต้องอ่านข้อมูลเป็นส่วนๆ เข้าสู่หน่วยความจำด้วยคำสั่ง AudioTrack.MODE_STREAM