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

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

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

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

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

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

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

  • config_statusBarComponent
  • config_systemUIFactoryComponent

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

सिस्टम UI को अनुकूलित करना

ओवरले

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

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

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

ऑटोमोटिव सिस्टम UI, SystemUI और CarSystemUI पैकेज के संसाधनों का उपयोग करता है, जिसका अर्थ है कि ऑटोमोटिव सिस्टम UI के लुक-एंड-फील को प्रभावित करने के लिए प्रत्येक स्थान के संसाधनों को ओवरले के साथ ओवरराइड किया जा सकता है।

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

दो प्राथमिक अनुकूलन प्रवेश बिंदुओं का विवरण नीचे दिया गया है।

ऑटोमोटिव सिस्टम UI में स्क्रीन के बाईं, नीचे और दाईं ओर तीन नेविगेशन बार हो सकते हैं। प्रत्येक सिस्टम बार की दृश्यता को निम्न कॉन्फ़िगरेशन के साथ टॉगल किया जाता है:

  • 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>

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

सिस्टम UI स्रोत कोड में परिवर्तन

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

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

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

  • config_statusBarComponent
  • config_systemUIFactoryComponent

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

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

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

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

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

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

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

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

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

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

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

लॉक स्क्रीन

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

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

adb shell input keyevent 26

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

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

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

चित्रा 3. लोड हो रहा है स्क्रीन

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

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

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

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

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

लेआउट को car_user_switching_dialog.xml .

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

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

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

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

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

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

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