Input mikrofon

Saat merekam audio, HAL Audio menerima panggilan openInputStream yang menyertakan argumen AudioSource untuk menunjukkan cara input mikrofon seharusnya diproses.

Sumber VOICE_RECOGNITION mengharapkan streaming mikrofon stereo yang memiliki efek pengurang gema (jika tersedia), tetapi tidak ada pemrosesan lain yang diterapkan.

Input mikrofon multisaluran

Untuk merekam audio dari perangkat yang memiliki lebih dari dua saluran (stereo), gunakan mask indeks saluran, bukan mask indeks posisi (seperti CHANNEL_IN_LEFT). Contoh:

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 akan menggunakan hanya nilai yang ditetapkan oleh setChannelMask (maksimum dua saluran).

Pengambilan foto serentak

Mulai Android 10, framework Android mendukung Pengambilan input serentak, tetapi dengan pembatasan untuk melindungi privasi pengguna. Sebagai bagian dari pembatasan tersebut, sumber virtual seperti AUDIO_SOURCE_FM_TUNER akan diabaikan, dan diizinkan untuk direkam secara bersamaan dengan input biasa (seperti mikrofon). HwAudioSource tidak dianggap sebagai bagian dari pembatasan pengambilan serentak.

Aplikasi yang didesain agar berfungsi dengan AUDIO_DEVICE_IN_BUS perangkat atau dengan AUDIO_DEVICE_IN_FM_TUNER perangkat harus secara eksplisit mengidentifikasi perangkat dan menggunakan AudioRecord.setPreferredDevice() untuk mengabaikan Android logika pemilihan sumber default.