Mikrofon girişi

Sesi yakalarken Audio HAL, mikrofon girişinin nasıl işlenmesi gerektiğini belirten bir AudioSource bağımsız değişkeni içeren bir openInputStream çağrısı alır.

VOICE_RECOGNITION kaynağı, yankı giderme etkisine (varsa) sahip olan ancak kendisine başka bir işlem uygulanmayan bir stereo mikrofon akışı bekler.

Çok kanallı mikrofon girişi

İkiden fazla kanalı (stereo) olan bir cihazdan ses yakalamak için konumsal indeks maskesi yerine ( CHANNEL_IN_LEFT gibi) bir kanal indeks maskesi kullanın. Örneğin:

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);

Hem setChannelMask hem de setChannelIndexMask ayarlandığında, AudioRecord yalnızca setChannelMask tarafından ayarlanan değeri kullanır (maksimum iki kanal).

Eşzamanlı yakalama

Android 10'dan itibaren Android çerçevesi, girişlerin eşzamanlı yakalanmasını destekler, ancak kullanıcının gizliliğini korumak için kısıtlamalar vardır. Bu kısıtlamaların bir parçası olarak, AUDIO_SOURCE_FM_TUNER gibi sanal kaynaklar göz ardı edilir ve normal bir girişle (mikrofon gibi) eş zamanlı olarak yakalanmalarına izin verilir. HwAudioSource eşzamanlı yakalama kısıtlamalarının bir parçası olarak kabul edilmez.

AUDIO_DEVICE_IN_BUS cihazlarıyla veya ikincil AUDIO_DEVICE_IN_FM_TUNER cihazlarıyla çalışmak üzere tasarlanan uygulamalar, Android'in varsayılan kaynak seçimi mantığını atlamak için bu cihazları açıkça tanımlamaya ve AudioRecord.setPreferredDevice() kullanmaya dayanmalıdır.