擷取音訊時,音訊 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
設定的值 (最多兩個聲道)。
並行擷取
自 Android 10 起,Android 架構支援
輸入內容的並行擷取,但
以保護使用者隱私根據這些限制
系統會忽略 AUDIO_SOURCE_FM_TUNER
等虛擬來源,
與一般輸入 (如麥克風) 同時擷取。
HwAudioSource
不算是並行擷取限制的一部分。
可與 AUDIO_DEVICE_IN_BUS
部裝置或次要裝置搭配使用的應用程式
AUDIO_DEVICE_IN_FM_TUNER
裝置必須能夠明確識別這些裝置
裝置,並使用 AudioRecord.setPreferredDevice()
略過 Android
預設的來源選取邏輯。