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

एंड्रॉइड 10 उपयोगकर्ता अनुभव को बेहतर बनाता है जिसके लिए एक से अधिक सक्रिय ऑडियो कैप्चर की आवश्यकता होती है, उदाहरण के लिए, यदि उपयोगकर्ता एक्सेसिबिलिटी सेवा द्वारा प्रदान किए गए वॉयस कमांड के साथ वीओआईपी कॉल या वीडियो रिकॉर्डर को नियंत्रित करना चाहता है।

ऑडियो फ्रेमवर्क केवल कुछ विशेषाधिकार प्राप्त ऐप्स को नियमित ऐप्स के साथ समवर्ती रूप से कैप्चर करने की अनुमति देने वाली नीति लागू करता है।

किसी एप्लिकेशन को कैप्चरिंग शुरू करने से रोकने के बजाय उसके कैप्चर किए गए ऑडियो को शांत करके समवर्ती नीति लागू की जाती है। यह फ्रेमवर्क को सक्रिय कैप्चर उपयोग के मामलों की संख्या और प्रकारों में परिवर्तनों को गतिशील रूप से संबोधित करने की अनुमति देता है, किसी ऐप को कैप्चरिंग शुरू करने से रोके बिना, जहां यह किसी अन्य ऐप द्वारा कैप्चरिंग समाप्त करने के बाद माइक्रोफ़ोन तक पूर्ण पहुंच पुनर्प्राप्त कर सकता है।

ऑडियो एचएएल और ऑडियो सबसिस्टम के लिए परिणाम यह है कि उन्हें एक साथ कई सक्रिय इनपुट स्ट्रीम का समर्थन करना होगा, भले ही कुछ मामलों में, केवल एक स्ट्रीम एक सक्रिय क्लाइंट को गैर-मूक ऑडियो प्रदान कर रही हो।

सीडीडी आवश्यकताएँ

समवर्ती कैप्चर समर्थन की आवश्यकताओं के लिए सीडीडी देखें।

ऑडियो एचएएल से स्थितियों को कैप्चर करें

समवर्ती कैप्चर परिदृश्य के परिणामस्वरूप सक्रिय इनपुट स्ट्रीम की संख्या, इनपुट डिवाइस चयन, या प्रीप्रोसेसिंग कॉन्फ़िगरेशन के संदर्भ में विभिन्न स्थितियां हो सकती हैं।

निम्नलिखित के बीच समवर्तीता हो सकती है:

  • एप्लिकेशन प्रोसेसर (एपी) से कई इनपुट स्ट्रीम
  • इनपुट स्ट्रीम और एक वॉयस कॉल
  • इनपुट स्ट्रीम और एक ऑडियो डीएसपी कम-शक्ति वाले हॉटवर्ड डिटेक्शन को लागू करता है

एपी इनपुट स्ट्रीम की समवर्ती गतिविधि

ऑडियो नीति कॉन्फ़िगरेशन फ़ाइल audio_policy_configuration.xml का उपयोग ऑडियो फ्रेमवर्क द्वारा यह निर्धारित करने के लिए किया जाता है कि एक साथ कितनी इनपुट स्ट्रीम खोली और सक्रिय की जा सकती हैं।

कम से कम, ऑडियो एचएएल को खुली और सक्रिय कॉन्फ़िगरेशन फ़ाइल में सूचीबद्ध प्रत्येक इनपुट प्रोफ़ाइल (रोल sink का mixPort ) के कम से कम एक उदाहरण का समर्थन करना चाहिए।

उपकरण चयन

जब कई सक्रिय क्लाइंट एक ही एचएएल इनपुट स्ट्रीम से जुड़े होते हैं, तो फ्रेमवर्क उपयोग मामले की प्राथमिकता के आधार पर इस इनपुट स्ट्रीम के लिए उपयुक्त डिवाइस का चयन करता है।

जब कई इनपुट स्ट्रीम सक्रिय होते हैं, तो प्रत्येक स्ट्रीम में एक अलग डिवाइस चयन हो सकता है।

यदि तकनीक संगत है, तो यह अनुशंसा की जाती है कि ऑडियो एचएएल और सबसिस्टम ब्लूटूथ हेडसेट और अंतर्निहित माइक जैसे विभिन्न उपकरणों से अलग-अलग स्ट्रीम कैप्चर करने की अनुमति दें।

यदि कोई असंगतता है (उदाहरण के लिए दो डिवाइस एक ही डिजिटल ऑडियो इंटरफ़ेस या बैक एंड साझा करते हैं) तो ऑडियो एचएएल को यह चुनना होगा कि कौन सी स्ट्रीम डिवाइस चयन को नियंत्रित करती है।

इस मामले में:

  • परिणामी स्थिति सुसंगत होनी चाहिए और समान परिदृश्य दोहराए जाने पर समान डिवाइस चयन की पेशकश करनी चाहिए।
  • जब समवर्ती स्थिति समाप्त हो जाती है, तो शेष सक्रिय स्ट्रीम को इस स्ट्रीम पर प्रारंभ में अनुरोधित डिवाइस पर रूट किया जाना चाहिए।

यदि सक्रिय उपयोग के मामलों के बीच ऑडियो एचएएल द्वारा प्राथमिकता क्रम को परिभाषित किया गया है, तो उसी क्रम का पालन करें जैसा कि frameworks/av/services/audiopolicy/common/include/policy.h में source_priority() में पाया गया है।

प्रीप्रोसेसिंग चयन

ऑडियो फ्रेमवर्क addEffect() या removeEffect() एचएएल तरीकों का उपयोग करके इनपुट स्ट्रीम पर प्रीप्रोसेसिंग का अनुरोध कर सकता है।

किसी दिए गए इनपुट स्ट्रीम पर प्रीप्रोसेसिंग के लिए, ऑडियो फ्रेमवर्क केवल इनपुट स्ट्रीम पर उच्चतम प्राथमिकता वाले सक्रिय उपयोग के मामले के अनुरूप कॉन्फ़िगरेशन को सक्षम करता है। हालाँकि, उपयोग के मामले सक्रियण और निष्क्रियकरण के दौरान कुछ ओवरलैप हो सकता है, जिससे एक ही इनपुट स्ट्रीम पर एक साथ दो सक्रिय प्रक्रियाएं (उदाहरण के लिए, इको कैंसिलर के दो उदाहरण) चल सकती हैं। इस मामले में, एचएएल कार्यान्वयन चुनता है कि कौन सा अनुरोध स्वीकार किया जाए; यह सक्रिय अनुरोधों पर नज़र रखता है और किसी भी प्रक्रिया के अक्षम होने पर सही स्थिति को पुनर्स्थापित करता है।

जब कई कैप्चर स्ट्रीम एक साथ सक्रिय होती हैं, तो अलग-अलग स्ट्रीम पर अलग-अलग प्रीप्रोसेसिंग अनुरोध चलाए जा सकते हैं।

एचएएल और ऑडियो सबसिस्टम कार्यान्वयन को अलग-अलग स्ट्रीम पर अलग-अलग प्री प्रोसेसिंग लागू करने की अनुमति देनी चाहिए, भले ही वे एक ही इनपुट डिवाइस साझा करें। अर्थात्, प्राथमिक कैप्चर स्रोत से स्ट्रीम को डीमक्स करने के बाद प्री प्रोसेसिंग लागू की जानी चाहिए।

यदि किसी दिए गए ऑडियो सबसिस्टम पर तकनीकी कारणों से यह संभव नहीं है, तो ऑडियो एचएएल को डिवाइस चयन में सूचीबद्ध नियमों के समान प्राथमिकता नियम लागू करना चाहिए।

एपी से समवर्ती वॉयस कॉल और कैप्चर

वॉयस कॉल सक्रिय होने पर एपी से कैप्चर किया जा सकता है। एंड्रॉइड 10 में यह स्थिति नई नहीं है और सीधे समवर्ती कैप्चर सुविधा से संबंधित नहीं है, लेकिन इस परिदृश्य के लिए दिशानिर्देशों का उल्लेख करना उपयोगी है।

कॉल के दौरान एपी से दो अलग-अलग प्रकार के कैप्चर की आवश्यकता होती है।

कॉल आरएक्स और टीएक्स कैप्चर करें

कॉल RX और TX को कैप्चर करना ऑडियो स्रोत AudioSource.VOICE_UPLINK या AudioSource.VOICE_DOWNLINK , और/या डिवाइस AudioDevice.IN_TELEPHONY_RX के उपयोग से शुरू होता है।

ऑडियो एचएएल को डिवाइस AudioDevice.IN_TELEPHONY_RX से उपलब्ध रूट के साथ इनपुट प्रोफाइल (रोल sink का mixPort ) पर प्रदर्शित होना चाहिए।

जब कोई कॉल कनेक्ट होती है (ऑडियो मोड AudioMode.IN_CALL है), तो डिवाइस AudioDevice.IN_TELEPHONY_RX से कम से कम एक सक्रिय कैप्चर स्ट्रीम होना संभव होना चाहिए।

कॉल सक्रिय होने पर इनपुट डिवाइस से कैप्चर करें

जब कोई कॉल सक्रिय होती है (ऑडियो मोड AudioMode.IN_CALL है), तो एपी से इनपुट स्ट्रीम को खोलना और सक्रिय करना संभव होना चाहिए जैसा कि एपी इनपुट स्ट्रीम की समवर्ती गतिविधि अनुभाग में निर्दिष्ट है।

हालाँकि, एपी इनपुट स्ट्रीम के अनुरोधों के साथ कोई विरोध होने पर डिवाइस चयन और प्री प्रोसेसिंग की प्राथमिकता हमेशा वॉयस कॉल द्वारा संचालित होनी चाहिए।

डीएसपी और एपी से समवर्ती कब्जा

जब ऑडियो सबसिस्टम में लो-पावर ऑडियो संदर्भ या हॉटवर्ड डिटेक्शन फ़ंक्शंस का समर्थन करने वाला डीएसपी होता है, तो कार्यान्वयन को एपी और ऑडियो डीएसपी से समवर्ती कैप्चर का समर्थन करना चाहिए। इसमें प्रारंभिक पता लगाने के चरण के दौरान डीएसपी द्वारा कैप्चर करना और डीएसपी द्वारा पता लगाने के बाद AudioSource.HOTWORD के साथ एपी द्वारा कैप्चर करना दोनों शामिल हैं।

इसे कार्यान्वयन विवरणक के माध्यम से ध्वनि ट्रिगर एचएएल द्वारा रिपोर्ट किए गए समवर्ती कैप्चर ध्वज द्वारा प्रतिबिंबित किया जाना चाहिए: ISoundTriggerHw.Properties.concurrentCapture = true

ऑडियो एचएएल को ध्वज AudioInputFlag.HW_HOTWORD द्वारा पहचाने गए हॉटवर्ड कैप्चर के लिए विशिष्ट इनपुट प्रोफ़ाइल को भी उजागर करना चाहिए। कार्यान्वयन को इस प्रोफ़ाइल पर कम से कम ध्वनि मॉडल की संख्या के बराबर कई स्ट्रीम खोलने और सक्रिय करने का समर्थन करना चाहिए जिन्हें ध्वनि ट्रिगर एचएएल द्वारा समवर्ती रूप से लोड किया जा सकता है।

इस इनपुट प्रोफ़ाइल से कैप्चर तब संभव होना चाहिए जब अन्य इनपुट प्रोफ़ाइल सक्रिय हों।

सहायक कार्यान्वयन के लिए निहितार्थ

डेटा उपयोग और उपयोगकर्ता अधिसूचना पर आवश्यकताएँ

क्योंकि समवर्ती माइक उपयोग, यदि दुरुपयोग किया जाता है, तो उपयोगकर्ता के निजी डेटा को लीक कर सकता है, हमें निम्नलिखित शर्तों और गारंटी को विशेषाधिकार प्राप्त प्रीलोडेड ऐप्स पर लागू करने की आवश्यकता है जो सहायक भूमिका निभाने के लिए कहते हैं।

  • माइक्रोफ़ोन के माध्यम से एकत्र किया गया डेटा तब तक डिवाइस से बाहर नहीं जाना चाहिए जब तक उपयोगकर्ता असिस्टेंट के साथ बातचीत नहीं कर रहा हो। उदाहरण के लिए, हॉटवर्ड ट्रिगर होने के बाद.
  • हॉटवर्ड का पता चलने के बाद समवर्ती रूप से सुनने वाले एप्लिकेशन को उपयोगकर्ता को दृश्य संकेत प्रदान करना चाहिए। इससे उपयोगकर्ताओं को यह समझने में मदद मिलती है कि आगे की बातचीत असिस्टेंट जैसे एक अलग ऐप के माध्यम से होगी।
  • उपयोगकर्ताओं के पास माइक्रोफ़ोन या सहायक ट्रिगर बंद करने की क्षमता होनी चाहिए।
  • जब ऑडियो रिकॉर्डिंग संग्रहीत की जाती है, तो उपयोगकर्ताओं के पास किसी भी समय रिकॉर्डिंग तक पहुंचने, समीक्षा करने और हटाने की क्षमता होनी चाहिए।

एंड्रॉइड 10 के लिए कार्यात्मक सुधार

सहायक एक-दूसरे को नहीं रोक रहे हैं

एंड्रॉइड 9 या उससे पहले के संस्करण पर, जब डिवाइस पर दो हमेशा चालू रहने वाले सहायक होते हैं, तो उनमें से केवल एक ही इसके हॉटवर्ड को सुन सकता है। इसलिए, दोनों सहायकों के बीच स्विच करने की आवश्यकता थी। एंड्रॉइड 10 में, डिफ़ॉल्ट असिस्टेंट को अन्य असिस्टेंट के साथ एक साथ सुना जा सकता है। इसके परिणामस्वरूप दोनों सहायकों वाले उपयोगकर्ताओं के लिए बहुत ही सहज अनुभव प्राप्त होता है।

माइक खुला रखने वाले ऐप्स

जब शाज़म या वेज़ जैसे ऐप माइक को खुला रखते हैं, तो डिफ़ॉल्ट असिस्टेंट अभी भी हॉटवर्ड सुन सकता है।

गैर-डिफ़ॉल्ट सहायक ऐप्स के लिए, एंड्रॉइड 10 के व्यवहार में कोई बदलाव नहीं है।

नमूना ऑडियो एचएएल कार्यान्वयन

इस दस्तावेज़ में दिशानिर्देशों का अनुपालन करने वाले ऑडियो एचएएल कार्यान्वयन का एक उदाहरण एओएसपी में पाया जा सकता है।