অ্যান্ড্রয়েড 10 ব্যবহারকারীর অভিজ্ঞতাকে উন্নত করে যার জন্য একই সাথে একাধিক সক্রিয় অডিও ক্যাপচারের প্রয়োজন হয়, উদাহরণস্বরূপ, যদি ব্যবহারকারী একটি ভিওআইপি কল বা ভিডিও রেকর্ডার নিয়ন্ত্রণ করতে চান একটি অ্যাক্সেসিবিলিটি পরিষেবা দ্বারা প্রদত্ত ভয়েস কমান্ড সহ।
অডিও ফ্রেমওয়ার্ক নীতিটি প্রয়োগ করে যা শুধুমাত্র নির্দিষ্ট বিশেষ সুবিধাপ্রাপ্ত অ্যাপগুলিকে নিয়মিত অ্যাপের সাথে একযোগে ক্যাপচার করার অনুমতি দেয়।
একটি অ্যাপ্লিকেশানকে ক্যাপচার করা শুরু করা থেকে আটকানোর পরিবর্তে এর ক্যাপচার করা অডিও নীরব করার মাধ্যমে সমবায় নীতি প্রয়োগ করা হয়৷ এটি একটি অ্যাপ্লিকেশানকে ক্যাপচার করা শুরু করতে বাধা না দিয়ে, অন্য কোনও অ্যাপ ক্যাপচার শেষ করার পরে মাইক্রোফোনে সম্পূর্ণ অ্যাক্সেস পুনরুদ্ধার করতে পারে এমন ক্ষেত্রে এটিকে ফ্রেমওয়ার্কটিকে গতিশীলভাবে ক্যাপচার ব্যবহারের ক্ষেত্রে সংখ্যা এবং প্রকারের পরিবর্তনগুলিকে মোকাবেলা করার অনুমতি দেয়৷
অডিও এইচএএল এবং অডিও সাবসিস্টেমের পরিণতি হল যে তাদের অবশ্যই একাধিক সক্রিয় ইনপুট স্ট্রীমকে একই সাথে সমর্থন করতে হবে, এমনকি যদি কিছু ক্ষেত্রে, শুধুমাত্র একটি স্ট্রীম একটি সক্রিয় ক্লায়েন্টকে নন-সাইলেন্ট অডিও প্রদান করে।
সিডিডি প্রয়োজনীয়তা
সমসাময়িক ক্যাপচার সমর্থনের প্রয়োজনীয়তার জন্য CDD দেখুন।
অডিও HAL থেকে পরিস্থিতি ক্যাপচার করুন
সক্রিয় ইনপুট স্ট্রীম, ইনপুট ডিভাইস নির্বাচন, বা প্রিপ্রসেসিং কনফিগারেশনের পরিপ্রেক্ষিতে একটি সমসাময়িক ক্যাপচার দৃশ্যকল্প বিভিন্ন পরিস্থিতিতে পরিণত হতে পারে।
নিম্নলিখিতগুলির মধ্যে সামঞ্জস্য ঘটতে পারে:
- অ্যাপ্লিকেশন প্রসেসর (এপি) থেকে বেশ কয়েকটি ইনপুট স্ট্রিম
- ইনপুট স্ট্রীম এবং একটি ভয়েস কল
- ইনপুট স্ট্রীম এবং একটি অডিও ডিএসপি একটি কম-পাওয়ার হটওয়ার্ড সনাক্তকরণ বাস্তবায়ন করে
AP ইনপুট স্ট্রীমগুলির সমসাময়িক কার্যকলাপ
অডিও নীতি কনফিগারেশন ফাইল audio_policy_configuration.xml
অডিও ফ্রেমওয়ার্ক দ্বারা ব্যবহার করা হয় কতগুলি ইনপুট স্ট্রীম একসাথে খোলা এবং সক্রিয় হতে পারে।
সর্বনিম্নভাবে, অডিও HAL-কে অবশ্যই খোলা এবং সক্রিয় কনফিগারেশন ফাইলে তালিকাভুক্ত প্রতিটি ইনপুট প্রোফাইলের ( mixPort
অফ রোল sink
) অন্তত একটি উদাহরণ সমর্থন করতে হবে।
ডিভাইস নির্বাচন
যখন একই HAL ইনপুট স্ট্রীমের সাথে একাধিক সক্রিয় ক্লায়েন্ট সংযুক্ত থাকে, তখন ফ্রেমওয়ার্ক ব্যবহারের ক্ষেত্রে অগ্রাধিকারের ভিত্তিতে এই ইনপুট স্ট্রীমের জন্য উপযুক্ত ডিভাইস নির্বাচন করে।
যখন বেশ কয়েকটি ইনপুট স্ট্রীম সক্রিয় থাকে, তখন প্রতিটি স্ট্রীমের একটি আলাদা ডিভাইস নির্বাচন থাকতে পারে।
প্রযুক্তিটি সামঞ্জস্যপূর্ণ হলে, এটি সুপারিশ করা হয় যে অডিও HAL এবং সাবসিস্টেম বিভিন্ন ডিভাইস থেকে বিভিন্ন স্ট্রিম ক্যাপচার করার অনুমতি দেয়, যেমন একটি ব্লুটুথ হেডসেট এবং বিল্ট-ইন মাইক৷
যদি কোনও অসঙ্গতি থাকে (উদাহরণস্বরূপ দুটি ডিভাইস একই ডিজিটাল অডিও ইন্টারফেস বা ব্যাক এন্ড ভাগ করে) অডিও HAL কে অবশ্যই চয়ন করতে হবে কোন স্ট্রীমটি ডিভাইস নির্বাচন নিয়ন্ত্রণ করে।
এই ক্ষেত্রে:
- ফলাফলের অবস্থা অবশ্যই সামঞ্জস্যপূর্ণ হতে হবে এবং একই দৃশ্যের পুনরাবৃত্তি হলে একই ডিভাইস নির্বাচন অফার করবে।
- সঙ্গতি অবস্থা শেষ হলে, অবশিষ্ট সক্রিয় স্ট্রীম এই স্ট্রীমে প্রাথমিকভাবে অনুরোধ করা ডিভাইসে রাউট করা আবশ্যক।
যদি একটি অগ্রাধিকার আদেশ অডিও HAL দ্বারা সক্রিয় ব্যবহারের ক্ষেত্রে সংজ্ঞায়িত করা হয়, frameworks/av/services/audiopolicy/common/include/policy.h
এ source_priority()
তে পাওয়া একই ক্রম অনুসরণ করুন
প্রিপ্রসেসিং নির্বাচন
অডিও ফ্রেমওয়ার্ক addEffect()
বা removeEffect()
HAL পদ্ধতি ব্যবহার করে একটি ইনপুট স্ট্রীমে প্রিপ্রসেসিংয়ের অনুরোধ করতে পারে।
একটি প্রদত্ত ইনপুট স্ট্রীমে প্রিপ্রসেসিংয়ের জন্য, অডিও ফ্রেমওয়ার্ক ইনপুট স্ট্রীমে সর্বোচ্চ অগ্রাধিকার সক্রিয় ব্যবহারের ক্ষেত্রের সাথে সম্পর্কিত কনফিগারেশনকে সক্ষম করে। যাইহোক, ব্যবহার কেস অ্যাক্টিভেশন এবং ডিঅ্যাক্টিভেশনের সময় কিছু ওভারল্যাপ হতে পারে, যার ফলে একই ইনপুট স্ট্রীমে দুটি যুগপত সক্রিয় প্রক্রিয়া (উদাহরণস্বরূপ, ইকো ক্যানসেলারের দুটি উদাহরণ) চালানো হয়। এই ক্ষেত্রে, HAL বাস্তবায়ন বেছে নেয় কোন অনুরোধ গ্রহণ করা হবে; এটি সক্রিয় অনুরোধগুলির ট্র্যাক রাখে এবং প্রক্রিয়াটি নিষ্ক্রিয় করা হলে সঠিক অবস্থা পুনরুদ্ধার করে।
যখন একাধিক ক্যাপচার স্ট্রীম একই সাথে সক্রিয় থাকে, তখন বিভিন্ন প্রিপ্রসেসিং অনুরোধ বিভিন্ন স্ট্রীমে চালানো হতে পারে।
এইচএএল এবং অডিও সাবসিস্টেম বাস্তবায়ন বিভিন্ন প্রি-প্রসেসিংকে বিভিন্ন স্ট্রীমে প্রয়োগ করার অনুমতি দেওয়া উচিত, এমনকি যদি তারা একই ইনপুট ডিভাইস শেয়ার করে। অর্থাৎ, প্রাইমারি ক্যাপচার সোর্স থেকে স্ট্রীমগুলি ডিমাক্স করার পরে প্রি-প্রসেসিং প্রয়োগ করা উচিত।
একটি প্রদত্ত অডিও সাবসিস্টেমের প্রযুক্তিগত কারণে এটি সম্ভব না হলে, অডিও HAL-এর উচিত ডিভাইস নির্বাচনের তালিকার মতো অগ্রাধিকার বিধি প্রয়োগ করা।
সমসাময়িক ভয়েস কল এবং এপি থেকে ক্যাপচার
একটি ভয়েস কল সক্রিয় থাকাকালীন AP থেকে ক্যাপচার ঘটতে পারে৷ অ্যান্ড্রয়েড 10-এ এই পরিস্থিতিটি নতুন নয় এবং সমবর্তী ক্যাপচার বৈশিষ্ট্যের সাথে সরাসরি সম্পর্কিত নয়, তবে এই দৃশ্যের জন্য নির্দেশিকা উল্লেখ করা দরকারী।
একটি কলের সময় AP থেকে দুটি ভিন্ন ধরনের ক্যাপচার প্রয়োজন।
- কল RX এবং TX পাথ ক্যাপচার করা হচ্ছে
- একটি ইনপুট ডিভাইস থেকে ক্যাপচার করা (উদাহরণস্বরূপ, অন্তর্নির্মিত মাইক)
কল RX এবং TX ক্যাপচার করুন
কল RX এবং TX ক্যাপচার করা অডিও উৎস AudioSource.VOICE_UPLINK
বা AudioSource.VOICE_DOWNLINK
, এবং/অথবা ডিভাইস AudioDevice.IN_TELEPHONY_RX
ব্যবহার করে ট্রিগার করা হয়।
অডিও এইচএএলগুলিকে AudioDevice.IN_TELEPHONY_RX
ডিভাইস থেকে উপলব্ধ রুট সহ ইনপুট প্রোফাইলে ( mixPort
অফ রোল sink
) প্রকাশ করা উচিত।IN_TELEPHONY_RX।
যখন একটি কল সংযুক্ত থাকে (অডিও মোড হল AudioMode.IN_CALL
), তখন AudioDevice.IN_TELEPHONY_RX
ডিভাইস থেকে অন্তত একটি সক্রিয় ক্যাপচার স্ট্রীম থাকা সম্ভব।IN_TELEPHONY_RX।
একটি কল সক্রিয় হলে ইনপুট ডিভাইস থেকে ক্যাপচার করুন
যখন একটি কল সক্রিয় থাকে (অডিও মোড হল AudioMode.IN_CALL
), তখন AP থেকে ইনপুট স্ট্রীমগুলি খোলা এবং সক্রিয় করা সম্ভব হওয়া উচিত যেমন AP ইনপুট স্ট্রীমগুলির সমবর্তী কার্যকলাপ বিভাগে উল্লেখ করা হয়েছে৷
যাইহোক, AP ইনপুট স্ট্রীম থেকে অনুরোধের সাথে বিরোধের ক্ষেত্রে ডিভাইস নির্বাচন এবং প্রাক প্রক্রিয়াকরণের অগ্রাধিকার সর্বদা ভয়েস কল দ্বারা চালিত হওয়া উচিত।
ডিএসপি এবং এপি থেকে সমসাময়িক ক্যাপচার
যখন অডিও সাবসিস্টেমে একটি ডিএসপি থাকে যা কম-পাওয়ার অডিও প্রসঙ্গ বা হটওয়ার্ড সনাক্তকরণ ফাংশন সমর্থন করে, তখন বাস্তবায়নটি AP এবং অডিও ডিএসপি থেকে সমসাময়িক ক্যাপচার সমর্থন করে। এর মধ্যে প্রাথমিক সনাক্তকরণ পর্যায়ে ডিএসপি দ্বারা ক্যাপচার এবং ডিএসপি দ্বারা শনাক্তকরণ ট্রিগার হওয়ার পরে AudioSource.HOTWORD
এর মাধ্যমে এপি দ্বারা ক্যাপচার উভয়ই অন্তর্ভুক্ত রয়েছে।
এটি বাস্তবায়ন বর্ণনাকারীর মাধ্যমে সাউন্ড ট্রিগার HAL দ্বারা রিপোর্ট করা সমসাময়িক ক্যাপচার পতাকা দ্বারা প্রতিফলিত হওয়া উচিত: ISoundTriggerHw.Properties.concurrentCapture = true
।
ফ্ল্যাগ AudioInputFlag.HW_HOTWORD
দ্বারা চিহ্নিত হটওয়ার্ড ক্যাপচারের জন্য অডিও HAL-এরও এক্সপোজ এবং ইনপুট প্রোফাইল নির্দিষ্ট করা উচিত। সাউন্ড ট্রিগার HAL দ্বারা একযোগে লোড করা যেতে পারে এমন সাউন্ড মডেলের সংখ্যার অন্তত সমান সমান এই প্রোফাইলে বেশ কয়েকটি স্ট্রীম খোলা এবং সক্রিয় করার জন্য বাস্তবায়ন সমর্থন করবে।
অন্যান্য ইনপুট প্রোফাইল সক্রিয় থাকাকালীন এই ইনপুট প্রোফাইল থেকে ক্যাপচার করা সম্ভব।
সহকারী বাস্তবায়নের জন্য প্রভাব
ডেটা ব্যবহার এবং ব্যবহারকারীর বিজ্ঞপ্তির প্রয়োজনীয়তা
যেহেতু সমসাময়িক মাইকের ব্যবহার, অপব্যবহার করা হলে, ব্যবহারকারীর ব্যক্তিগত ডেটা ফাঁস করতে পারে, তাই আমাদের নিম্নলিখিত শর্তাদি এবং গ্যারান্টিগুলির প্রয়োজন যাতে বিশেষাধিকারপ্রাপ্ত প্রিলোড করা অ্যাপগুলি সহকারীর ভূমিকা ধরে রাখতে বলে।
- ব্যবহারকারী অ্যাসিস্ট্যান্টের সাথে ইন্টারঅ্যাক্ট না করা পর্যন্ত মাইক্রোফোনের মাধ্যমে সংগৃহীত ডেটা ডিভাইস ছেড়ে যাবে না। উদাহরণস্বরূপ, হটওয়ার্ডটি ট্রিগার হওয়ার পরে।
- হটওয়ার্ড শনাক্ত হওয়ার পরে একযোগে শোনা অ্যাপ্লিকেশনগুলি ব্যবহারকারীকে চাক্ষুষ সংকেত প্রদান করবে। এটি ব্যবহারকারীদের বুঝতে সাহায্য করে যে আরও কথোপকথন একটি ভিন্ন অ্যাপের মাধ্যমে হবে, যেমন অ্যাসিস্ট্যান্ট।
- ব্যবহারকারীদের মাইক্রোফোন বা সহকারী ট্রিগার বন্ধ করার ক্ষমতা থাকতে হবে।
- যখন অডিও রেকর্ডিং সংরক্ষণ করা হয়, ব্যবহারকারীদের যে কোনো সময় রেকর্ডিং অ্যাক্সেস, পর্যালোচনা এবং মুছে ফেলার ক্ষমতা থাকতে হবে।
Android 10 এর জন্য কার্যকরী উন্নতি
সহকারীরা একে অপরকে ব্লক করছে না
অ্যান্ড্রয়েড 9 বা তার নিচের সংস্করণে, যখন ডিভাইসে দুটি সর্বদা-অন-অ্যাসিস্ট্যান্ট থাকে, তাদের মধ্যে শুধুমাত্র একজনই এর হটওয়ার্ড শুনতে পারে। অতএব, দুই সহকারীর মধ্যে স্যুইচ করার প্রয়োজন ছিল। অ্যান্ড্রয়েড 10-এ, ডিফল্ট সহকারী অন্যান্য সহকারীর সাথে একযোগে শুনতে পারে। এর ফলে উভয় সহকারী সহ ব্যবহারকারীদের জন্য অনেক মসৃণ অভিজ্ঞতা পাওয়া যায়।
মাইক খোলা থাকা অ্যাপ
Shazam বা Waze-এর মতো অ্যাপগুলি যখন মাইক খোলা রাখে, তখনও ডিফল্ট সহকারী হটওয়ার্ড শুনতে পারে।
নন-ডিফল্ট সহকারী অ্যাপগুলির জন্য, Android 10-এর আচরণে কোনও পরিবর্তন নেই।
নমুনা অডিও HAL বাস্তবায়ন
এই নথিতে নির্দেশিকা মেনে চলা একটি অডিও HAL বাস্তবায়নের উদাহরণ AOSP- তে পাওয়া যাবে।