इंटिग्रेशन फ़्लो

CarSettings में ManageAssistActivity की मदद से, चालू वीआईए को चुना जाता है. सेटिंग स्क्रीन के डिफ़ॉल्ट ऐप्लिकेशन सेक्शन के तहत, PackageInstaller ऐप्लिकेशन की मदद से यह प्रोसेस ट्रिगर होती है.

सेटिंग स्क्रीन पर डिफ़ॉल्ट ऐप्लिकेशन

पहली इमेज. सेटिंग स्क्रीन पर डिफ़ॉल्ट ऐप्लिकेशन

चुने गए वीआईए को सिस्टम में दो तरीकों से दिखाया जाता है:

  1. RolesManager सिस्टम सेवा के हिस्से के तौर पर
  2. VoiceInteractionManagerService की मदद से, AssistUtils इंटरनल एपीआई के ज़रिए.

वीआईए की सूची हासिल की जा सकती है. इसके लिए, RolesManager भूमिका का नाम android.app.role.ASSISTANT होना चाहिए.

हॉटवर्ड ट्रिगर करना

Android, हार्डवेयर डीएसपी के ऊपर, AlwaysOnHotwordDetector को ऐब्स्ट्रैक्शन के तौर पर उपलब्ध कराता है. इससे, कम ऊर्जा वाले हमेशा चालू रहने वाले आवाज़ पहचानने की सुविधा के लिए, VoiceInteractionService को आवाज़ के नमूना से आसानी से जोड़ा जा सकता है. यह इंटरैक्शन फ़्लो सबसे आम और जाना-माना है. इसमें, उपयोगकर्ता नई बातचीत शुरू करने के लिए, वॉइस ऐप्लिकेशन (वीए) से इंटरैक्ट करने का अनुरोध करता है. इस तरीके से शुरू किए गए वॉइस सेशन की पहचान, SHOW_SOURCE_ASSIST_GESTURE flag से की जाती है.

हॉटवर्ड ट्रिगर करना

दूसरी इमेज. हॉटवर्ड ट्रिगर करना

लेजेंड. सिस्टम की सेवाएं हल्के नीले रंग में और वीआईए के कॉम्पोनेंट हरे रंग में दिखते हैं.

पीटीटी ट्रिगर करना

यह, हार्डवेयर बटन को लंबे या छोटे समय के लिए दबाने पर लागू होता है. AAOS में, पीटीटी को CarInputService मैनेज करता है. डिफ़ॉल्ट तौर पर, यह सेवा व्हीकल एचएएल से मिले इनपुट इवेंट को मैनेज करती है. साथ ही, वॉइस इंटरैक्शन के मामले में, यह मुख्य इवेंट पर यह लॉजिक लागू करती है:

  • पीटीटी के छोटे इवेंट (KeyEvent.KEYCODE_VOICE_ASSIST) को, नया वॉइस सेशन शुरू करने के लिए VoiceInteractionManagerService पर भेजा जाता है.
  • पीटीटी के लंबे इवेंट को सबसे पहले प्रोजेक्शन रिसीवर (उदाहरण के लिए, Android Auto या CarPlay) को भेजा जाता है. इसके बाद, ब्लूटूथ से कनेक्ट किए गए डिवाइसों को और आखिर में, स्थानीय वीआईए ऐप्लिकेशन को भेजा जाता है.

इस फ़्लो का इस्तेमाल करके शुरू किए गए सेशन की पहचान, SHOW_SOURCE_PUSH_TO_TALK से की जाती है.

पीटीटी ट्रिगर करना

तीसरी इमेज. पीटीटी ट्रिगर करना

AAOS में हार्डवेयर वॉइस-कंट्रोल बटन को इंटिग्रेट करने के लिए, ऑटोमोटिव में की इनपुट इंटिग्रेशन देखें.

टैप-टू-टॉक ट्रिगर करना (या सॉफ़्टवेयर बटन)

सिस्टम यूज़र इंटरफ़ेस (यूआई) से वॉइस इंटरैक्शन को ट्रिगर करने के लिए, AssistUtil का इस्तेमाल किया जाता है. यह एक छिपा हुआ सिस्टम एपीआई है. इसका इस्तेमाल सिर्फ़ बंडल किए गए सिस्टम ऐप्लिकेशन कर सकते हैं. जैसे, सिस्टम यूज़र इंटरफ़ेस (यूआई). इससे ये काम किए जा सकते हैं:

  • वॉइस कंट्रोल सेशन शुरू करने के लिए, VoiceInteractionManagerService से इंटरैक्ट करना.
  • यह तय करना कि फ़िलहाल कौन सा वीआईए चुना गया है.

चुने गए वीआईए ऐप्लिकेशन को डाइनैमिक तरीके से दिखाने के लिए, सिस्टम यूज़र इंटरफ़ेस (यूआई), RoleManager का इस्तेमाल कर सकता है. साथ ही, ROLE_ASSISTANT के लिए, भूमिका के मालिक में होने वाले बदलावों को ट्रैक कर सकता है. टीटीटी ट्रिगर करने के तरीके का उदाहरण, CarSystemUI, AssistantButton में देखा जा सकता है.

'बोलकर खोजने के लिए दबाएं' सुविधा को ट्रिगर करना

चौथी इमेज. टैप-टू-टॉक ट्रिगर करना

वॉइस असिस्टेंट की 'टैप-टू-रीड' (टीटीआर) सुविधा

ऑटोमोटिव में, सूचना केंद्र में पोस्ट की गई सूचनाओं को INBOX या INBOX_IN_GROUP सूचनाओं के तौर पर पहचाना जाता है. उदाहरण के लिए, एसएमएस मैसेज . इनमें, 'चलाएं' ऐक्शन बटन शामिल होता है. इससे, उपयोगकर्ता चुने गए वीआईए की मदद से सूचनाओं को ज़ोर से पढ़वा सकता है . साथ ही, अपनी आवाज़ से जवाब भी दे सकता है.

सूचनाएं

पांचवी इमेज. सूचनाएं

इस फ़्लो को लागू करने के तरीके के बारे में ज़्यादा जानने के लिए, मैसेजिंग के निर्देश मैनेज करना लेख पढ़ें.

कार लॉन्चर से वीआईए लॉन्च करना

वीआईए, किसी भी अन्य ऐप्लिकेशन की तरह, अपने मेनिफ़ेस्ट में एक या उससे ज़्यादा लॉन्चर ऐक्टिविटी शामिल कर सकते हैं. यह तय करना ऐप्लिकेशन डेवलपर और ओईएम पर निर्भर करता है कि ये ऐक्टिविटी क्या करेंगी. ओईएम, इस ऐप्लिकेशन को पहले से इंस्टॉल करने की अनुमति दे सकते हैं.

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

डीएसपी और ऑडियो एचएएल

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

अनुमतियां

सिस्टम से जुड़ी खास अनुमतियां देना

खास अनुमति, उपयोगकर्ता नहीं दे सकता. इसलिए, अगर किसी वीआईए को इनमें से किसी अनुमति की ज़रूरत है, तो ओईएम को अपने सिस्टम इमेज में उसका एपीके पहले से लोड करना होगा. साथ ही, अपने बिल्ड में उन अनुमतियों को साफ़ तौर पर देना होगा. अनुमतियों का अनुरोध करना लेख पढ़ें.

इसके लिए, अपने प्रोजेक्ट में अनुमति वाली सूची की डिपेंडेंसी जोड़ें:

Android.bp

android_app {
     ...
     required: ["privapp_allowlist_com.example.myvoicecontrol"],
     ...
}

yourdata/etc/car फ़ोल्डर में, सिस्टम से जुड़ी खास अनुमति वाली सूची की अनुमति वाली फ़ाइल जोड़ें:

vendor/…/data/etc/car/Android.bp

prebuilt_etc {
    name:privapp_allowlist_com.example.myvoicecontrol",
    sub_dir: "permissions",
    src: "com.example.myvoicecontrol.xml",
    filename_from_src: true,
}

vendor/…/data/etc/car/com.example.myvoicecontrol.xml

<?xml version="1.0" encoding="utf-8"?>
<permissions>
    <privapp-permissions package="com.android.car.voicecontrol">
        <permission name="android.permission.MEDIA_CONTENT_CONTROL"/>
    </privapp-permissions>
</permissions>

खतरनाक लेवल की अनुमतियां पहले से देना

अनुमतियों का अनुरोध करना लेख में बताया गया है कि वीआईए को कुछ सुविधाओं को ऐक्सेस करने के लिए, उपयोगकर्ता की सहमति की ज़रूरत होती है. डिफ़ॉल्ट VoiceInteractionService को इनमें से कुछ अनुमतियां पहले से दी जाती हैं. इसके लिए, DefaultPermissionGrantPolicy.java देखें. डिफ़ॉल्ट हैंडलर के लिए अनुमतियों के बारे में ज़्यादा जानने के लिए, सिर्फ़ डिफ़ॉल्ट हैंडलर में इस्तेमाल की जाने वाली अनुमतियां देखें. कॉन्फ़िगरेशन फ़ाइल का इस्तेमाल करके भी, अनुमतियां पहले से दी जा सकती हैं.default-permissions.xml अनुमतियां पहले से देने से जुड़ी पाबंदियों के बारे में जानने के लिए, Android Compatibility Definition Document (CDD) में सेक्शन 9 देखें.

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

डिस्ट्रिब्यूशन (पहले से इंस्टॉल करना और अपडेट डिप्लॉय करना)

पहले से इंस्टॉल किए गए वीआईए, /product/priv-apps या /vendor/priv-apps पार्टीशन और फ़ोल्डर में होने चाहिए. पार्टीशन के बारे में ज़्यादा जानने के लिए, पार्टीशन की खास जानकारी और प्रॉडक्ट पार्टीशन बनाना लेख पढ़ें.

दूसरे मामले में, वेंडर पार्टीशन को सिस्टम से अलग अपडेट किया जा सकता है. इसलिए, यहां होस्ट किए गए ऐप्लिकेशन, @hide सिस्टम एपीआई को ऐक्सेस नहीं कर पाएंगे. पहले से इंस्टॉल किए गए ऐप्लिकेशन की जगह के हिसाब से, अपडेट को ओटीए के तौर पर (ओटीए अपडेट देखें) या किसी ऐप्लिकेशन स्टोर से ऐप्लिकेशन अपडेट के ज़रिए किया जा सकता है.

पसंद के मुताबिक बनाएं

ऑटोमोटिव से जुड़े कॉन्सेप्ट में बताया गया है कि यूज़र इंटरफ़ेस (यूआई)/यूज़र एक्सपीरियंस (यूएक्स) की एक जैसी डिज़ाइन और पसंद के मुताबिक बनाने की सुविधा, किसी अन्य फ़ॉर्म फ़ैक्टर के मुकाबले ऑटोमोटिव में ज़्यादा ज़रूरी है. ज़्यादा से ज़्यादा इंटरऑपरेबिलिटी के लिए, AAOS Car UI लाइब्रेरी का इस्तेमाल करने का सुझाव दिया जाता है. इस लाइब्रेरी में ऐसे कॉम्पोनेंट और संसाधन शामिल हैं जिन्हें ओईएम, ऑटोमोटिव ऐप्लिकेशन में इंटिग्रेट कर सकते हैं. इन ऐप्लिकेशन को ओईएम, अपनी पसंद के मुताबिक बना सकते हैं. इस तरह, एक ही एपीके को इस तरह बनाया जा सकता है कि उसके यूज़र इंटरफ़ेस (यूआई) को हर कार मॉडल के डिज़ाइन के हिसाब से पसंद के मुताबिक बनाया जा सके.