เมื่อบันทึกเสียง Audio HAL จะได้รับการเรียก openInputStream
ซึ่งมีอาร์กิวเมนต์ AudioSource
เพื่อระบุวิธีประมวลผลอินพุตไมโครโฟน
แหล่งที่มาของ VOICE_RECOGNITION
คาดว่าจะมีสตรีมไมโครโฟนสเตอริโอที่มีเอฟเฟกต์การยกเลิกเสียงก้อง (ถ้ามี) แต่ไม่มีการประมวลผลอื่นใดที่ใช้อยู่
อินพุตไมโครโฟนหลายช่องสัญญาณ
หากต้องการบันทึกเสียงจากอุปกรณ์ที่มีมากกว่าสองช่องสัญญาณ (สเตอริโอ) ให้ใช้มาสก์ดัชนีช่องแทนมาสก์ดัชนีตำแหน่ง (เช่น CHANNEL_IN_LEFT
) ตัวอย่างเช่น:
final AudioFormat audioFormat = new AudioFormat.Builder()
.setEncoding(AudioFormat.ENCODING_PCM_16BIT)
.setSampleRate(44100)
.setChannelIndexMask(0xf /* 4 channels, 0..3 */)
.build();
final AudioRecord audioRecord = new AudioRecord.Builder()
.setAudioFormat(audioFormat)
.build();
audioRecord.setPreferredDevice(someAudioDeviceInfo);
เมื่อตั้งค่าทั้ง setChannelMask
และ setChannelIndexMask
แล้ว AudioRecord
จะใช้เฉพาะค่าที่กำหนดโดย setChannelMask
(สูงสุด 2 ช่อง)
การจับพร้อมกัน
สำหรับ Android 10 เฟรมเวิร์ก Android รองรับ การบันทึกอินพุตพร้อมกัน แต่มีข้อจำกัดในการปกป้องความเป็นส่วนตัวของผู้ใช้ ส่วนหนึ่งของข้อจำกัดเหล่านี้ แหล่งที่มาเสมือน เช่น AUDIO_SOURCE_FM_TUNER
จะถูกละเว้น และได้รับอนุญาตให้บันทึกพร้อมกันพร้อมกับอินพุตปกติ (เช่น ไมโครโฟน) HwAudioSource
ไม่ถือว่าเป็นส่วนหนึ่งของข้อจำกัดในการจับภาพพร้อมกัน
แอปที่ออกแบบมาเพื่อทำงานกับอุปกรณ์ AUDIO_DEVICE_IN_BUS
หรือกับอุปกรณ์ AUDIO_DEVICE_IN_FM_TUNER
รองจะต้องอาศัยการระบุอุปกรณ์เหล่านั้นอย่างชัดเจน และใช้ AudioRecord.setPreferredDevice()
เพื่อเลี่ยงผ่านตรรกะการเลือกแหล่งที่มาเริ่มต้นของ Android