सिस्टम यूज़र इंटरफ़ेस (यूआई) लागू करना

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

सिस्टम यूज़र इंटरफ़ेस (यूआई) क्या है?

वाहन के सिस्टम के यूज़र इंटरफ़ेस (यूआई) के खास कॉम्पोनेंट में ये शामिल हैं:

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

System UI कैसे काम करता है?

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

  • config_statusBarComponent
  • config_systemUIFactoryComponent

CarSystemUI, System UI पैकेज का एक्सटेंशन है. इसका मतलब है कि System UI पैकेज में मौजूद क्लास और संसाधनों का इस्तेमाल, CarSystemUI पैकेज कर सकता है और उन्हें बदल सकता है.

सिस्टम यूज़र इंटरफ़ेस (यूआई) को पसंद के मुताबिक बनाना

ओवरले

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

ओवरले फ़ाइलों को PRODUCT_PACKAGE_OVERLAYS डायरेक्ट्री में रखा जाना चाहिए. साथ ही, उनमें वही सब-फ़ोल्डर होने चाहिए जो ओरिजनल AOSP रूट स्ट्रक्चर में मौजूद हैं. Android 10 या इसके बाद के वर्शन के लिए, PRODUCT_PACKAGE_OVERLAYS को इस पर सेट किया गया है:

PRODUCT_PACKAGE_OVERLAYS := packages/services/Car/car_product/overlay

वाहन के सिस्टम यूज़र इंटरफ़ेस (यूआई) में, सिस्टम यूज़र इंटरफ़ेस और CarSystemUI पैकेज के संसाधनों का इस्तेमाल किया जाता है. इसका मतलब है कि वाहन के सिस्टम यूज़र इंटरफ़ेस (यूआई) के लुक-एंड-फ़ील पर असर डालने के लिए, हर जगह के संसाधनों को ओवरले से बदला जा सकता है.

किसी फ़ाइल को बदलने के लिए, आपने जिस /overlay डायरेक्ट्री में बदली जा रही फ़ाइल का डायरेक्ट्री स्ट्रक्चर डाला है उसमें उसका डुप्लीकेट बनाएं. इसके बाद, उस डुप्लीकेट फ़ाइल को उस डायरेक्ट्री में शामिल करें. उदाहरण के लिए, इनके लिए:

frameworks/base/packages/CarSystemUI/res/layout/super_status_bar.xml

बदली जाने वाली super_status_bar.xml फ़ाइल जोड़ें, जो यहां मौजूद है:

packages/services/Car/car_product/overlay/frameworks/base/packages/CarSystemUI/res/layout/

frameworks/base/packages/SystemUI/res/values/config.xml को बदलने के लिए, (सिस्टम यूज़र इंटरफ़ेस (यूआई) में, CarSystemUI में), बदली गई config.xml फ़ाइल को यहां जोड़ें:

packages/services/Car/car_product/overlay/frameworks/base/packages/SystemUI/res/layout/

या

packages/services/Car/car_product/overlay/frameworks/base/packages/CarSystemUI/res/layout/

कस्टमाइज़ेशन के दो मुख्य एंट्री पॉइंट के बारे में यहां बताया गया है.

वाहन के सिस्टम के यूज़र इंटरफ़ेस (यूआई) में, स्क्रीन की बाईं, सबसे नीचे, और दाईं ओर तीन नेविगेशन बार हो सकते हैं. हर सिस्टम बार को इन कॉन्फ़िगरेशन की मदद से टॉगल किया जा सकता है:

  • config_enableLeftSystemBar
  • config_enableBottomSystemBar
  • config_enableRightSystemBar

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

  • car_left_system_bar.xml
  • car_left_system_bar_unprovisioned.xml
  • car_system_bar.xml (सबसे नीचे मौजूद नेविगेशन बार का लेआउट)
  • car_system_bar_unprovisioned.xml
  • car_right_system_bar.xml
  • car_right_system_bar_unprovisioned.xml

इन लेआउट में टॉप लेवल पर com.android.systemui.car.systembar.CarSystemBarView होना चाहिए. इसमें कोई भी ज़रूरी व्यू शामिल किया जा सकता है. नेविगेशन बार में बटन शामिल करने के लिए, com.android.systemui.car.systembar.CarSystemBarButton का इस्तेमाल किया जा सकता है.

अगर किसी उपयोगकर्ता के लिए डिवाइस को सही तरीके से सेट अप किया गया है, तो CarSystemBar#createSystemBar में इन व्यू की संख्या बढ़ जाती है.

स्टेटस बार

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

  • car_top_navigation_bar.xml
  • car_top_navigation_bar_unprovisioned.xml

इन लेआउट में सबसे ऊपर com.android.systemui.statusbar.car.CarNavigationBarView होना चाहिए. स्टेटस बार में स्टेटस आइकॉन होते हैं. किसी आइकॉन का साइज़ बदलने के लिए, किसी खास साइज़ को तय करने के बजाय, स्केल फ़ैक्टर की मदद से आइकॉन को एक जैसा स्केल करें. उदाहरण के लिए, आइकॉन का साइज़ दोगुना करने के लिए, ओवरले फ़ाइल /overlay/frameworks/base/packages/CarSystemUI/res/values/dimens.xml में ये डाइमेंशन जोड़ें:

<resources>
    <!-- The amount by which to scale up the status bar icons.-->
    <item name="status_bar_icon_scale_factor" format="float" type="dimen">2</item>
</resources>

स्टेटस बार, एक खास विंडो लेयर में होता है. इसमें सूचना पैनल, उपयोगकर्ता स्विचर, हेड अप सूचनाएं (एचयूएन), और कीगार्ड भी शामिल होते हैं. इनके लिए अलग-अलग लेआउट, super_status_bar.xml में शामिल किए गए हैं.

सिस्टम यूज़र इंटरफ़ेस (यूआई) के सोर्स कोड में हुए बदलाव

हो सकता है कि ओवरले, सिस्टम यूज़र इंटरफ़ेस (यूआई) के व्यवहार को ज़रूरत के मुताबिक बनाने के लिए ज़रूरी सुविधाएं न दें.

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

सिस्टम यूज़र इंटरफ़ेस (यूआई) के ज़्यादातर हिस्सों को इन दो एंट्री पॉइंट की मदद से पसंद के मुताबिक बनाया जा सकता है:

  • config_statusBarComponent
  • config_systemUIFactoryComponent

उदाहरण के लिए, अगर आपने com.android.systemui.statusbar.car.custom.CustomCarStatusBar नाम की कोई ऐसी क्लास बनाई है जो CarStatusBar को एक्सटेंड करती है, तो config_statusBarComponent को अपडेट करके इस नए कॉम्पोनेंट पर ले जाएं. इस क्लास को एक्सटेंड करने से, सिस्टम बार और सूचनाओं के लॉजिक से जुड़े ज़्यादातर एलिमेंट को पसंद के मुताबिक बनाया जा सकता है.

इसी तरह, CustomCarSystemUIFactory बनाया जा सकता है और उसे config_systemUIFactoryComponent में डाला जा सकता है. VolumeUI और lockscreen की सुविधा को अपडेट करने के लिए, इस क्लास का इस्तेमाल करें.

उपयोगकर्ता स्विच करने और अनलॉक करने की सुविधा को पसंद के मुताबिक बनाना

यहां दिए गए कॉन्टेंट में, उपयोगकर्ता के लिए स्विच करने के अनुभव को पसंद के मुताबिक बनाने का तरीका बताया गया है.

शब्द ब्यौरा
कीगार्ड फ़ुलस्क्रीन डायलॉग, ताकि फ़ोरग्राउंड ऐप्लिकेशन के साथ अनचाहे इंटरैक्शन से बचा जा सके. एक से ज़्यादा उपयोगकर्ताओं को सेट अप करने पर, हर उपयोगकर्ता की निजता को सुरक्षित रखता है.
डायलॉग लोड हो रहा है उपयोगकर्ताओं के बीच स्विच करते समय दिखने वाली लोडिंग स्क्रीन.
लॉकस्क्रीन, बाउंसर ऐसी स्क्रीन जिस पर व्यक्ति को पिन, पैटर्न या पासवर्ड डालना पड़ता है.
उपयोगकर्ता Android उपयोगकर्ता.
उपयोगकर्ता चुनने वाला टूल डिवाइस के बूट होने पर दिखने वाली उपयोगकर्ता पिकर स्क्रीन.
उपयोगकर्ता स्विचर क्विक सेटिंग से स्क्रीन स्विच करते समय दिखने वाला उपयोगकर्ता स्विचर.

उपयोगकर्ता स्विच करने की सुविधा को पसंद के मुताबिक बनाना

कीगार्ड और बाउंसर

Android Automotive OS में, उपयोगकर्ता पिकर वाली कीगार्ड स्क्रीन सिर्फ़ तब दिखती है, जब कोई उपयोगकर्ता लॉकस्क्रीन पर 'रद्द करें' बटन पर क्लिक करता है. कीगार्ड स्क्रीन यहां दिखाई गई है.

कीगार्ड स्क्रीन

पहली इमेज. कीगार्ड स्क्रीन

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

लॉकस्क्रीन

दूसरी इमेज. लॉकस्क्रीन.

अगर लॉक को मैन्युअल तरीके से पावर चालू या बंद करने के लिए सेट किया गया है, तो नीचे दिए गए निर्देश का पालन करें:

adb shell input keyevent 26

उपयोगकर्ता चुनने वाला टूल

उपयोगकर्ता पिकर स्क्रीन तब दिखती है, जब कार के सिस्टम यूज़र इंटरफ़ेस (यूआई) स्टेटस बार और Maps के लिए ज़रूरी डिवाइस को फिर से चालू किया जाता है. ज़्यादा जानने के लिए, FullscreenUserSwitcher देखें.

स्क्रीन लोड हो रही है

तीसरी इमेज. उपयोगकर्ता चुनने वाली स्क्रीन

इस स्क्रीन के लेआउट को अपनी पसंद के मुताबिक बनाने के लिए, car_fullscreen_user_switcher.xml में जाएं.

स्क्रीन लोड हो रही है

जब भी कोई उपयोगकर्ता किसी दूसरे पेज पर जाता है, तब लोडिंग स्क्रीन दिखती है. भले ही, वह उपयोगकर्ता किसी भी एंट्री पॉइंट से आया हो. उदाहरण के लिए, उपयोगकर्ता पिकर या सेटिंग स्क्रीन की मदद से. लोडिंग स्क्रीन, फ़्रेमवर्क के सिस्टम यूज़र इंटरफ़ेस (यूआई) का एक अहम हिस्सा है. साथ ही, यह CarUserSwitchingDialog नाम की सार्वजनिक क्लास से मैप होती है. उदाहरण के लिए, ऊपर दी गई इमेज 3 देखें.

Theme_DeviceDefault_Light_Dialog_Alert_UserSwitchingDialog की मदद से, थीम को पसंद के मुताबिक बनाया जा सकता है.

Android उपयोगकर्ता खाता सेट अप करने के लिए, सेटअप विज़र्ड के शुरुआती फ़्लो में ड्राइवर को अपने लिए उपयोगकर्ता नाम सेट अप करने की सुविधा मिलती है. अगर ड्राइवर, Android उपयोगकर्ता को किसी Google खाते से जोड़ता है, तो उपयोगकर्ता का नाम उस खाते से चुना जाता है. हालांकि, अगर ड्राइवर ने कोई नाम बताया है, जैसे कि DriverB और बाद में उस उपयोगकर्ता नाम को अपने Google खाते में Maddy के नाम से जोड़ा है, तो मूल रूप से असाइन किया गया नाम (DriverB) नहीं बदलेगा, क्योंकि वह नाम साफ़ तौर पर सेट किया गया था. ड्राइवर, सिर्फ़ सेटिंग मेन्यू में जाकर नाम बदल सकता है.

car_user_switching_dialog.xml. में जाकर, लेआउट को पसंद के मुताबिक बनाया जा सकता है

OEM, NoActionBar.Fullscreen नाम की थीम का इस्तेमाल करके, स्टेटस और नेविगेशन बार को छिपा सकते हैं. (यह ओरिजनल सिस्टम यूज़र इंटरफ़ेस (यूआई) है, जिसे कार के रेफ़रंस यूज़र इंटरफ़ेस (यूआई) के लिए अपडेट किया गया है.) ज़्यादा जानकारी के लिए, पसंद के मुताबिक बनाना देखें.

OEM, उपयोगकर्ताओं को स्विच करने के लिए यूज़र इंटरफ़ेस एंट्री पॉइंट उपलब्ध करा सकते हैं. हालांकि, कभी-कभी इसके नतीजे अच्छे नहीं होते. ऐसा होने पर:

  1. OEM, कस्टम लोडिंग स्क्रीन (या डायलॉग) बनाता है और उसे दिखाता है.
    • यूज़र एक्सपीरियंस के हिसाब से, जब कोई उपयोगकर्ता स्विच करने का तरीका चुनता है, तो OEM कस्टम लोडिंग स्क्रीन लॉन्च करता है. उपयोगकर्ता के स्विच करने के बाद, इस स्क्रीन को छिपाया जा सकता है.
    • OEM को अपनी पसंद के हिसाब से प्राथमिकता वाली विंडो सेट करनी होगी. उदाहरण के लिए, ज़्यादा प्राथमिकता वाली विंडो टाइप. प्राथमिकता प्राथमिकता, कीगार्ड की प्राथमिकता से ज़्यादा नहीं हो सकती.
  2. OEM, config_customuserswitchui में बताए गए तरीके के मुताबिक, मुख्य फ़्रेमवर्क में config_customUserSwitchUi=true को सेट करता है config.xml. इस वजह से, फ़्रेमवर्क CarUserSwitchingDialog को नहीं दिखाता.

लॉकस्क्रीन को पसंद के मुताबिक बनाना

लॉकस्क्रीन, सिस्टम यूज़र इंटरफ़ेस (यूआई) का एक अहम हिस्सा है. इसे OEM अपनी पसंद के मुताबिक बना सकता है. फ़्लो को पसंद के मुताबिक बनाने के लिए, frameworks/base/packages/CarSystemUI/ से शुरू करें.

पहली बार इस्तेमाल करने वाले उपयोगकर्ता के सेटअप को पसंद के मुताबिक बनाना

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