เมื่อบันทึกเสียง HAL เสียงจะได้รับการเรียก openInputStream
ที่มีอาร์กิวเมนต์ AudioSource
เพื่อระบุวิธีประมวลผลอินพุตไมโครโฟน
แหล่งที่มา VOICE_RECOGNITION
ต้องการสตรีมไมโครโฟนสเตอริโอที่มีเอฟเฟกต์การตัดเสียงสะท้อน (หากมี) แต่ไม่มีการประมวลผลอื่นๆ
อินพุตไมโครโฟนหลายช่อง
หากต้องการบันทึกเสียงจากอุปกรณ์ที่มีมากกว่า 2 ช่อง (สเตอริโอ) ให้ใช้มาสก์ดัชนีช่องแทนมาสก์ดัชนีตำแหน่ง (เช่น 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