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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

बात करने के लिए टैप करें सुविधा को ट्रिगर करना (या सॉफ़्टवेयर बटन)

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

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

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

टैप करके बात करने की सुविधा को ट्रिगर करना

चौथी इमेज. टैप करके बात करने की सुविधा को ट्रिगर करना

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

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

सूचनाएं

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

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

कार लॉन्चर से VIA लॉन्च करना

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

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

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

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

अनुमतियां

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

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

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

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>

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

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

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

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

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

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

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

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