Saat merekam audio, Audio HAL menerima panggilan openInputStream yang mencakup argumen AudioSource untuk menunjukkan cara pemrosesan input mikrofon.
Sumber VOICE_RECOGNITION mengharapkan streaming mikrofon stereo yang memiliki efek pembatalan gema (jika tersedia), tetapi tidak ada pemrosesan lain yang diterapkan padanya.
Input mikrofon multi-saluran
Untuk merekam audio dari perangkat dengan lebih dari dua channel (stereo), gunakan mask indeks channel, bukan mask indeks posisi (seperti CHANNEL_IN_LEFT).
Misalnya:
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);
Jika setChannelMask dan setChannelIndexMask ditetapkan, AudioRecord hanya menggunakan
nilai yang ditetapkan oleh setChannelMask (maksimum dua saluran).
Perekaman serentak
Mulai Android 10, framework Android mendukung
Pengambilan serentak input, tetapi dengan
batasan untuk melindungi privasi pengguna. Sebagai bagian dari batasan ini, sumber virtual seperti AUDIO_SOURCE_FM_TUNER diabaikan, dan diizinkan untuk direkam secara bersamaan dengan input reguler (seperti mikrofon).
HwAudioSource tidak dianggap sebagai bagian dari batasan pengambilan gambar serentak.
Aplikasi yang didesain untuk berfungsi dengan perangkat AUDIO_DEVICE_IN_BUS atau dengan perangkat
AUDIO_DEVICE_IN_FM_TUNER sekunder harus mengandalkan identifikasi eksplisit perangkat tersebut dan menggunakan AudioRecord.setPreferredDevice() untuk melewati logika pemilihan sumber default Android.