एक साथ कई स्क्रीन कैप्चर करना

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

ऑडियो फ़्रेमवर्क, नीति को लागू करता है. इससे, सामान्य ऐप्लिकेशन के साथ-साथ सिर्फ़ कुछ खास ऐप्लिकेशन को ऑडियो रिकॉर्ड करने की अनुमति मिलती है.

एक साथ कई काम करने की नीति को, कैप्चर किए गए ऑडियो की आवाज़ बंद करके लागू किया जाता है, न कि कैप्चर करना शुरू नहीं करता है. इससे फ़्रेमवर्क, ऐक्टिव कैप्चर के इस्तेमाल के उदाहरणों की संख्या और टाइप में होने वाले बदलावों को डाइनैमिक तौर पर ठीक कर सकता है. साथ ही, किसी ऐप्लिकेशन को कैप्चर शुरू करने से नहीं रोकता. ऐसा तब होता है, जब कोई दूसरा ऐप्लिकेशन कैप्चर करने के बाद, माइक्रोफ़ोन का पूरा ऐक्सेस वापस पा सकता है.

ऑडियो एचएएल और ऑडियो सबसिस्टम के लिए इसका मतलब है कि उन्हें एक साथ कई ऐक्टिव इनपुट स्ट्रीम के साथ काम करना होगा. भले ही, कुछ मामलों में किसी ऐक्टिव क्लाइंट को सिर्फ़ एक स्ट्रीम से नॉन-साइलेंट ऑडियो मिल रहा हो.

सीडीडी की ज़रूरी शर्तें

CDD देखें 'एक ही समय पर कैप्चर करें' सुविधा के लिए ज़रूरी शर्तें.

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

एक साथ कई कैप्चर करने की स्थिति में, ऐक्टिव इनपुट स्ट्रीम की संख्या, इनपुट डिवाइस के विकल्प या प्रीप्रोसेसिंग कॉन्फ़िगरेशन के हिसाब से अलग-अलग स्थितियां हो सकती हैं.

इन दोनों स्थितियों में एक साथ कई वैल्यू का एक साथ इस्तेमाल किया जा सकता है:

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

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

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

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

डिवाइस चुनना

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

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

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

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

इस मामले में:

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

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

डेटा को पहले से प्रोसेस करने का विकल्प

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

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

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

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

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

AP से कैप्चर और एक साथ किए गए वॉइस कॉल

वॉइस कॉल के दौरान AP से कैप्चर किया जा सकता है. Android 10 में यह समस्या नई नहीं है. यह सीधे तौर पर, एक साथ कई फ़ोटो लेने की सुविधा से जुड़ी नहीं है. हालांकि, इस स्थिति के लिए दिशा-निर्देशों के बारे में बताना ज़रूरी है.

कॉल के दौरान, एपी से दो अलग-अलग तरह के कैप्चर की ज़रूरत होती है.

कॉल RX और TX कैप्चर करें

कॉल के इनपुट और आउटपुट को रिकॉर्ड करने की सुविधा, ऑडियो सोर्स AudioSource.VOICE_UPLINK या AudioSource.VOICE_DOWNLINK और/या डिवाइस AudioDevice.IN_TELEPHONY_RX के इस्तेमाल से ट्रिगर होती है.

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

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

इनपुट डिवाइस से कैप्चर करें, जब कॉल चालू है

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

हालांकि, डिवाइस चुनने और प्रोसेस करने से पहले की प्राथमिकता हमेशा आवाज़ से तय होनी चाहिए अगर AP इनपुट स्ट्रीम से किए गए अनुरोधों में कोई समस्या होती है.

DSP और AP से समवर्ती कैप्चर

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

इसे साउंड ट्रिगर एचएएल के ज़रिए रिपोर्ट किए गए समवर्ती कैप्चर फ़्लैग के ज़रिए दिखाया जाना चाहिए लागू करने वाला डिस्क्रिप्टर: ISoundTriggerHw.Properties.concurrentCapture = true.

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

अन्य इनपुट प्रोफ़ाइल चालू होने पर, इस इनपुट प्रोफ़ाइल से कैप्चर किया जा सकता है.

Assistant को लागू करने पर क्या असर पड़ेगा

डेटा के इस्तेमाल और उपयोगकर्ता को सूचना देने से जुड़ी ज़रूरी शर्तें

अगर एक ही समय पर माइक का गलत इस्तेमाल किया जाता है, तो इससे उपयोगकर्ता का निजी डेटा लीक हो सकता है. इसलिए, हमें इन चीज़ों की ज़रूरत होगी उन खास ऐप्लिकेशन पर लागू होने की शर्तें और गारंटी देती हैं जिनके पास पहले से लोड किया गया खास अधिकार है और Assistant की भूमिका.

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

Android 10 के काम करने के तरीके में किए गए सुधार

Assistants एक-दूसरे को ब्लॉक न कर रहे हों

Android 9 या इससे पहले के वर्शन वाले डिवाइस पर, अगर हमेशा चालू रहने वाली दो Assistant हैं, तो हो सकता है कि उनमें से सिर्फ़ एक ही डिवाइस के लिए इस्तेमाल होने वाले हॉटवर्ड को सुन रहा हो. इसलिए, स्विच करने के दौरान हैं, तो मुझे मदद चाहिए. Android 10 में, डिफ़ॉल्ट Assistant की मदद से एक ही समय पर, Assistant को Assistant को चालू करें. इससे, दोनों Assistant का इस्तेमाल करने वाले लोगों को बेहतर अनुभव मिलता है.

माइक चालू रखने वाले ऐप्लिकेशन

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

डिफ़ॉल्ट Assistant ऐप्लिकेशन के अलावा, अन्य Assistant ऐप्लिकेशन के लिए Android 10 में कोई बदलाव नहीं हुआ है.

ऑडियो एचएएल लागू करने का नमूना

इस दस्तावेज़ में दिए गए दिशा-निर्देशों का पालन करने वाले ऑडियो एचएएल को लागू करने का उदाहरण, AOSP में देखा जा सकता है.