Input mikrofon

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.