माइक्रोफ़ोन इनपुट

ऑडियो कैप्चर करते समय, ऑडियो एचएएल को एक 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() का इस्तेमाल करना होगा.