অডিও ক্যাপচার করার সময়, অডিও 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
(সর্বোচ্চ দুটি চ্যানেল) দ্বারা সেট করা মান ব্যবহার করে।
সমবর্তী ক্যাপচার
অ্যান্ড্রয়েড 10 অনুসারে, অ্যান্ড্রয়েড ফ্রেমওয়ার্ক ইনপুটগুলির একযোগে ক্যাপচার সমর্থন করে, তবে ব্যবহারকারীর গোপনীয়তা রক্ষা করার জন্য বিধিনিষেধ সহ। এই বিধিনিষেধের অংশ হিসাবে, ভার্চুয়াল উত্স যেমন AUDIO_SOURCE_FM_TUNER
উপেক্ষা করা হয়, এবং নিয়মিত ইনপুট (যেমন মাইক্রোফোন) সহ একই সাথে ক্যাপচার করার অনুমতি দেওয়া হয়। HwAudioSource
সমবর্তী ক্যাপচার বিধিনিষেধের অংশ হিসাবে বিবেচিত হয় না।
AUDIO_DEVICE_IN_BUS
ডিভাইস বা সেকেন্ডারি AUDIO_DEVICE_IN_FM_TUNER
ডিভাইসগুলির সাথে কাজ করার জন্য ডিজাইন করা অ্যাপগুলিকে অবশ্যই সেই ডিভাইসগুলিকে স্পষ্টভাবে সনাক্ত করতে এবং Android ডিফল্ট সোর্স নির্বাচন লজিক বাইপাস করার জন্য AudioRecord.setPreferredDevice()
ব্যবহার করার উপর নির্ভর করতে হবে৷