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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

'बोलने के लिए टैप करें' सुविधा को ट्रिगर करना

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

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

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

सूचनाएं

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

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

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

किसी भी दूसरे ऐप्लिकेशन की तरह, VIAs में एक या उससे ज़्यादा लॉन्चर ऐक्टिविटी शामिल की जा सकती हैं. यह तय करना कि ये गतिविधियां क्या करें, यह ऐप्लिकेशन डेवलपर और OEM के ऊपर है.

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

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

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

अनुमतियां

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

उपयोगकर्ता, खास अनुमति नहीं दे सकता. अगर किसी VIA को इनमें से किसी अनुमति की ज़रूरत है, तो OEM को अपने सिस्टम इमेज में अपना 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 कंपैटिबिलिटी डेफ़िनिशन दस्तावेज़ (सीडीडी) का सेक्शन 9 देखें.

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

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

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

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

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

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