Mikrofon girişi

Ses HAL'i, ses kaydederken mikrofon girişinin nasıl işleneceğini belirten bir AudioSource bağımsız değişkeni içeren bir openInputStream çağrısı alır.

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

Çok kanallı mikrofon girişi

İkiden fazla kanala (stereo) sahip bir cihazdan ses yakalamak için konumsal dizin maskesi yerine kanal dizini maskesi (CHANNEL_IN_LEFT gibi) 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 (en fazla iki kanal).

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 uygulanır. Bu kısıtlamalar kapsamında, AUDIO_SOURCE_FM_TUNER gibi sanal kaynaklar yoksayılır ve normal bir girişle (ör. mikrofon) birlikte 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 tasarlanmış uygulamalar, bu cihazları açıkça tanımlamalı ve Android'in varsayılan kaynak seçim mantığını atlamak için AudioRecord.setPreferredDevice() kullanmalıdır.