เมื่อบันทึกเสียง 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