सिस्टम UI लागू करें

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

सिस्टम यूआई क्या है?

ऑटोमोटिव सिस्टम यूआई के लिए विशिष्ट घटकों में शामिल हैं:

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

सिस्टम यूआई कैसे काम करता है?

सिस्टम यूआई एक एंड्रॉइड ऐप है जो डिवाइस चालू होने पर चलता है। ऐप को SystemServer द्वारा प्रतिबिंब के माध्यम से शुरू किया गया है। सिस्टम यूआई के उपयोगकर्ता-दृश्यमान पहलुओं के लिए सबसे प्रासंगिक प्रवेश बिंदु नीचे सूचीबद्ध हैं। ऑटोमोटिव-विशिष्ट क्षमताओं के लिए एंड्रॉइड सिस्टम यूआई को अनुकूलित करने के लिए इन घटकों का उपयोग करें।

  • config_statusBarComponent
  • config_systemUIFactoryComponent

CarSystemUI, सिस्टम UI पैकेज का एक विस्तार है, जिसका अर्थ है कि सिस्टम UI पैकेज में कक्षाओं और संसाधनों का उपयोग CarSystemUI पैकेज द्वारा किया और ओवरराइड किया जा सकता है।

सिस्टम यूआई को अनुकूलित करें

ओवरले

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

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

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

ऑटोमोटिव सिस्टम यूआई सिस्टम यूआई और कारसिस्टमयूआई पैकेज से संसाधनों का उपयोग करता है, जिसका अर्थ है कि ऑटोमोटिव सिस्टम यूआई के स्वरूप और अनुभव को प्रभावित करने के लिए प्रत्येक स्थान के संसाधनों को ओवरले के साथ ओवरराइड किया जा सकता है।

किसी फ़ाइल को बदलने के लिए, आपके द्वारा निर्दिष्ट /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 बदलने के लिए, (सिस्टम UI में, 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 में शामिल हैं।

सिस्टम यूआई स्रोत कोड बदलता है

ओवरले सिस्टम यूआई व्यवहार को पर्याप्त रूप से अनुकूलित करने के लिए आवश्यक लचीलापन प्रदान नहीं कर सकते हैं।

चेतावनी। एंड्रॉइड सोर्स कोड में किए गए बदलावों को एंड्रॉइड के बाद के रिलीज में अपडेट करना मुश्किल है। हम दृढ़तापूर्वक अनुशंसा करते हैं कि आप कोड को सीधे संशोधित करने के बजाय ऑटोमोटिव सिस्टम यूआई कोड का विस्तार करें। इस तरह, अंतर्निहित ऑटोमोटिव सिस्टम यूआई स्रोत कोड को न्यूनतम मर्ज संघर्षों के साथ अपग्रेड किया जा सकता है क्योंकि सभी अनुकूलन ज्ञात एपीआई सतहों के माध्यम से कार्यान्वित किए जाते हैं।

सिस्टम यूआई के अधिकांश पहलुओं को इन दो प्रवेश बिंदुओं के माध्यम से अनुकूलित किया जा सकता है:

  • config_statusBarComponent
  • config_systemUIFactoryComponent

उदाहरण के लिए, यदि आप com.android.systemui.statusbar.car.custom.CustomCarStatusBar नाम का एक वर्ग बनाते हैं, जो CarStatusBar विस्तार करता है, तो इस नए घटक को इंगित करने के लिए config_statusBarComponent को अपडेट करें। इस वर्ग का विस्तार करने से सिस्टम बार और अधिसूचना तर्क से संबंधित अधिकांश तत्वों का अनुकूलन संभव हो जाता है।

इसी तरह, आप CustomCarSystemUIFactory बना सकते हैं और इसे config_systemUIFactoryComponent में रख सकते हैं। वॉल्यूमयूआई और लॉकस्क्रीन की कार्यक्षमता को अपडेट करने के लिए इस क्लास का उपयोग करें।

उपयोगकर्ता स्विचिंग और अनलॉकिंग को अनुकूलित करें

निम्नलिखित सामग्री बताती है कि उपयोगकर्ता स्विचिंग अनुभव को कैसे अनुकूलित किया जाए।

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

उपयोगकर्ता स्विचिंग को अनुकूलित करें

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

एंड्रॉइड ऑटोमोटिव ओएस में, उपयोगकर्ता पिकर के साथ कीगार्ड स्क्रीन केवल तभी प्रदर्शित होती है जब कोई उपयोगकर्ता लॉकस्क्रीन पर रद्द करें बटन पर क्लिक करता है। कीगार्ड स्क्रीन नीचे दिखाई गई है।

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

चित्र 1. कीगार्ड स्क्रीन

जब उपयोगकर्ता ने डिवाइस को अनलॉक करने के लिए गोपनीयता प्रकार का चयन किया है, तो बाउंसर के साथ एक लॉकस्क्रीन प्रदर्शित होती है, जैसा कि नीचे दिखाया गया है।

लॉक स्क्रीन

चित्र 2. लॉकस्क्रीन।

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

adb shell input keyevent 26

उपयोगकर्ता पिकर

उपयोगकर्ता पिकर स्क्रीन तब प्रदर्शित होती है जब कार के सिस्टम यूआई स्टेटस बार और मैप्स से अभिन्न डिवाइस को रीबूट किया जाता है। अधिक जानने के लिए, FullscreenUserSwitcher देखें।

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

चित्र 3. उपयोगकर्ता पिकर स्क्रीन

इस स्क्रीन का लेआउट car_fullscreen_user_switcher.xml में अनुकूलित किया जा सकता है।

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

जब भी कोई उपयोगकर्ता स्विच करता है तो लोडिंग स्क्रीन प्रदर्शित होती है, चाहे प्रवेश बिंदु कुछ भी हो। उदाहरण के लिए, उपयोगकर्ता पिकर या सेटिंग्स स्क्रीन के माध्यम से। लोडिंग स्क्रीन फ्रेमवर्क सिस्टम यूआई का अभिन्न अंग है और CarUserSwitchingDialog नामक सार्वजनिक वर्ग से मैप होता है। उदाहरण के लिए ऊपर चित्र 3 देखें।

थीम को Theme_DeviceDefault_Light_Dialog_Alert_UserSwitchingDialog के साथ अनुकूलित किया जा सकता है।

एंड्रॉइड उपयोगकर्ता को सेट करने के लिए, प्रारंभिक सेटअप विज़ार्ड प्रवाह ड्राइवर को अपने लिए एक उपयोगकर्ता नाम सेट करने में सक्षम बनाता है। यदि ड्राइवर एंड्रॉइड उपयोगकर्ता को Google खाते से जोड़ता है, तो उपयोगकर्ता नाम उस खाते से चुना जाता है। हालाँकि, यदि ड्राइवर एक नाम निर्दिष्ट करता है, उदाहरण के लिए ड्राइवरबी, और फिर बाद में उस उपयोगकर्ता नाम को मैडी के नाम के साथ अपने Google खाते में जोड़ता है, तो मूल रूप से निर्दिष्ट नाम (ड्राइवरबी) नहीं बदला जाता है क्योंकि वह नाम स्पष्ट रूप से सेट किया गया था। ड्राइवर केवल सेटिंग मेनू पर नाम बदल सकता है।

लेआउट को car_user_switching_dialog.xml .

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

जबकि OEM उपयोगकर्ताओं को स्विच करने के लिए उपयोगकर्ता इंटरफ़ेस प्रवेश बिंदु प्रदान कर सकते हैं, परिणाम कभी-कभी अवांछनीय हो सकते हैं। क्या ऐसा होना चाहिए:

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

लॉकस्क्रीन को कस्टमाइज़ करें

लॉकस्क्रीन सिस्टम यूआई का एक अभिन्न अंग है, जिसे OEM द्वारा अनुकूलित किया जा सकता है। प्रवाह को अनुकूलित करने के लिए, frameworks/base/packages/CarSystemUI/ से प्रारंभ करें।

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

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