20.11.2016 Views

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!