麥克風輸入

捕獲音訊時,音訊 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);

setChannelMasksetChannelIndexMask同時設定時, AudioRecord僅使用setChannelMask設定的值(兩個通道的最大值)。

並發捕獲

從 Android 10 開始,Android 框架支援並發擷取輸入,但有限制以保護使用者的隱私。作為這些限制的一部分,虛擬來源(例如AUDIO_SOURCE_FM_TUNER將被忽略,並允許與常規輸入(例如麥克風)同時捕獲。 HwAudioSource不被視為並發捕獲限制的一部分。

設計為與AUDIO_DEVICE_IN_BUS裝置或輔助AUDIO_DEVICE_IN_FM_TUNER裝置搭配使用的應用程式必須依賴明確辨識這些裝置並使用AudioRecord.setPreferredDevice()繞過 Android 預設來源選擇邏輯。