Saat merekam audio, Audio HAL menerima panggilan openInputStream
yang
menyertakan argumen AudioSource
untuk menunjukkan cara input mikrofon harus
diproses.
Sumber VOICE_RECOGNITION
mengharapkan streaming mikrofon stereo yang memiliki
efek peredam gema (jika tersedia), tetapi tidak ada pemrosesan lain yang diterapkan.
Input mikrofon multisaluran
Untuk merekam audio dari perangkat dengan lebih dari dua saluran (stereo), gunakan
mask indeks saluran, 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
Perekaman 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 serentak bersama dengan input reguler (seperti mikrofon).
HwAudioSource
tidak dianggap sebagai bagian dari batasan pengambilan serentak.
Aplikasi yang dirancang untuk berfungsi dengan perangkat AUDIO_DEVICE_IN_BUS
atau dengan perangkat
AUDIO_DEVICE_IN_FM_TUNER
sekunder harus mengandalkan identifikasi perangkat
tersebut secara eksplisit dan menggunakan AudioRecord.setPreferredDevice()
untuk mengabaikan logika
pemilihan sumber default Android.