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

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

समवर्ती कब्जा

एंड्रॉइड 10 के अनुसार, एंड्रॉइड फ्रेमवर्क इनपुट के समवर्ती कैप्चर का समर्थन करता है, लेकिन उपयोगकर्ता की गोपनीयता की सुरक्षा के लिए प्रतिबंधों के साथ। इन प्रतिबंधों के भाग के रूप में, AUDIO_SOURCE_FM_TUNER जैसे आभासी स्रोतों को नजरअंदाज कर दिया जाता है, और उन्हें नियमित इनपुट (जैसे माइक्रोफ़ोन) के साथ समवर्ती रूप से कैप्चर करने की अनुमति दी जाती है। HwAudioSource को समवर्ती कैप्चर प्रतिबंधों का हिस्सा नहीं माना जाता है।

AUDIO_DEVICE_IN_BUS डिवाइस या द्वितीयक AUDIO_DEVICE_IN_FM_TUNER डिवाइस के साथ काम करने के लिए डिज़ाइन किए गए ऐप्स को उन डिवाइसों की स्पष्ट रूप से पहचान करने और Android डिफ़ॉल्ट स्रोत चयन तर्क को बायपास करने के लिए AudioRecord.setPreferredDevice() उपयोग करने पर भरोसा करना चाहिए।