ऑडियो कैप्चर करते समय, ऑडियो HAL को openInputStream कॉल मिलता है. इसमें AudioSource आर्ग्युमेंट शामिल होता है. इससे यह पता चलता है कि माइक्रोफ़ोन के इनपुट को कैसे प्रोसेस किया जाना चाहिए.
VOICE_RECOGNITION सोर्स के लिए, स्टीरियो माइक्रोफ़ोन स्ट्रीम की ज़रूरत होती है. इसमें इको कैंसल करने का इफ़ेक्ट (अगर उपलब्ध हो) होना चाहिए. हालांकि, इस पर कोई और प्रोसेसिंग लागू नहीं होनी चाहिए.
मल्टी-चैनल माइक्रोफ़ोन इनपुट
दो से ज़्यादा चैनलों (स्टीरियो) वाले डिवाइस से ऑडियो कैप्चर करने के लिए, पोज़िशनल इंडेक्स मास्क (जैसे, CHANNEL_IN_LEFT) के बजाय, चैनल इंडेक्स मास्क का इस्तेमाल करें. उदाहरण के लिए:
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);
setChannelMask और setChannelIndexMask, दोनों सेट होने पर, AudioRecord सिर्फ़ setChannelMask से सेट की गई वैल्यू का इस्तेमाल करता है. इसमें ज़्यादा से ज़्यादा दो चैनल हो सकते हैं.
कॉनकरंट कैप्चर
Android 10 से, Android फ़्रेमवर्क, इनपुट के
कॉनकरंट कैप्चर की सुविधा देता है. हालांकि, इसमें कुछ
पाबंदियां हैं, ताकि उपयोगकर्ता की निजता को सुरक्षित रखा जा सके. इन पाबंदियों के तहत, वर्चुअल सोर्स जैसे कि AUDIO_SOURCE_FM_TUNER को अनदेखा किया जाता है. साथ ही, इन्हें सामान्य इनपुट (जैसे, माइक्रोफ़ोन) के साथ कॉनकरंट तरीके से कैप्चर किया जा सकता है.
HwAudioSource को, कॉनकरंट कैप्चर की पाबंदियों का हिस्सा नहीं माना जाता.
AUDIO_DEVICE_IN_BUS डिवाइस या दूसरे AUDIO_DEVICE_IN_FM_TUNER डिवाइस के साथ काम करने के लिए डिज़ाइन किए गए ऐप्लिकेशन को, साफ़ तौर पर उन डिवाइसों की पहचान करनी होगी. साथ ही, Android के डिफ़ॉल्ट सोर्स चुनने की लॉजिक को बायपास करने के लिए, AudioRecord.setPreferredDevice() का इस्तेमाल करना होगा.