মাইক্রোফোন ইনপুট

অডিও ক্যাপচার করার সময়, অডিও 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 দ্বারা নির্ধারিত মানটি ব্যবহার করে (সর্বোচ্চ দুটি চ্যানেল)।

একযোগে ক্যাপচার

অ্যান্ড্রয়েড ১০ থেকে, অ্যান্ড্রয়েড ফ্রেমওয়ার্ক ব্যবহারকারীর গোপনীয়তা রক্ষার জন্য কিছু বিধিনিষেধ সহ ইনপুটগুলির যুগপৎ ক্যাপচার সমর্থন করে। এই বিধিনিষেধগুলির অংশ হিসাবে, AUDIO_SOURCE_FM_TUNER এর মতো ভার্চুয়াল সোর্সগুলিকে উপেক্ষা করা হয় এবং একটি সাধারণ ইনপুটের (যেমন মাইক্রোফোন) সাথে একযোগে ক্যাপচার করার অনুমতি দেওয়া হয়। HwAudioSource যুগপৎ ক্যাপচারের এই বিধিনিষেধের অংশ হিসাবে বিবেচনা করা হয় না।

যেসব অ্যাপ AUDIO_DEVICE_IN_BUS ডিভাইস অথবা সেকেন্ডারি AUDIO_DEVICE_IN_FM_TUNER ডিভাইসের সাথে কাজ করার জন্য ডিজাইন করা হয়েছে, সেগুলোকে অ্যান্ড্রয়েডের ডিফল্ট সোর্স সিলেকশন লজিক বাইপাস করতে অবশ্যই সেই ডিভাইসগুলোকে স্পষ্টভাবে শনাক্ত করতে হবে এবং AudioRecord.setPreferredDevice() ব্যবহার করতে হবে।