Mikrofon girişi

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

VOICE_RECOGNITION kaynağı, yankı giderme efekti (varsa) olan ancak başka bir işlem uygulanmamış bir stereo mikrofon akışı bekler.

Çok kanallı mikrofon girişi

İkiden fazla kanalı (stereo) olan bir cihazdan ses yakalamak için konumsal dizin maskesi (ör. CHANNEL_IN_LEFT) yerine kanal dizin 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 (en fazla iki kanal) kullanır.

Eşzamanlı yakalama

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

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