সিস্টেম UI প্রয়োগ করুন

Android Automotive একটি নতুন সিস্টেম UI প্রদান করে যা বিশেষভাবে যানবাহনের জন্য তৈরি করা হয়েছে। সিস্টেম UI এর বেশিরভাগ উপাদানগুলি ফ্রেমওয়ার্ক পরিষেবাগুলির সাথে শক্তভাবে সংযুক্ত থাকে। সিস্টেম UI বলতে স্ক্রিনে প্রদর্শিত কোনো উপাদানকে বোঝায় যা কোনো অ্যাপের অংশ নয়। স্বয়ংচালিত সিস্টেম UI (CarSystemUI উপাদান প্যাকেজে) হল Android সিস্টেম UI (সিস্টেম UI প্যাকেজে) এর একটি এক্সটেনশন, যা গাড়ির জন্য বিশেষভাবে কাস্টমাইজ করা হয়েছে।

সিস্টেম UI কি?

স্বয়ংচালিত সিস্টেম UI এর নির্দিষ্ট উপাদানগুলির মধ্যে রয়েছে:

উপাদান বর্ণনা
লকস্ক্রিন UI স্ক্রীন যার মাধ্যমে ব্যবহারকারীদের একটি নির্দিষ্ট ব্যবহারকারীর অ্যাকাউন্টে প্রমাণীকরণ করা হয়।
ন্যাভিগেশন বার সিস্টেম বার যা স্ক্রিনের বাম, নীচে বা ডানদিকে অবস্থান করা যেতে পারে এবং এতে বিভিন্ন অ্যাপে নেভিগেশনের জন্য ফেসট বোতাম অন্তর্ভুক্ত থাকতে পারে, বিজ্ঞপ্তি প্যানেল টগল করুন এবং যানবাহন নিয়ন্ত্রণ (যেমন HVAC) প্রদান করতে পারে। এটি অ্যান্ড্রয়েড সিস্টেম UI বাস্তবায়ন থেকে আলাদা, যা ব্যাক, হোম এবং অ্যাপ-স্ট্যাক বোতামগুলি প্রদান করে।
স্ট্যাটাস বার সিস্টেম বার স্ক্রীন বরাবর অবস্থান করে এবং এটি একটি নেভিগেশন বার হিসাবে কাজ করে। স্ট্যাটাস বার সমর্থন করার জন্য কার্যকারিতা প্রদান করে:
  • কানেক্টিভিটি আইকন। ব্লুটুথ, ওয়াই-ফাই এবং হটস্পট/মোবাইল সংযোগ সহ।
  • পুলডাউন বিজ্ঞপ্তি প্যানেল। উদাহরণস্বরূপ, স্ক্রিনের উপরে থেকে নিচের দিকে সোয়াইপ করা।
  • হেডস আপ নোটিফিকেশন (HUN)।
সিস্টেম UI স্ক্রিনে প্রদর্শিত কোনো উপাদানকে বোঝায় যা কোনো অ্যাপের অংশ নয়।
ব্যবহারকারী সুইচার UI স্ক্রীন যার মাধ্যমে একজন ব্যবহারকারী একটি ভিন্ন ব্যবহারকারী নির্বাচন করতে পারে।
ভলিউম UI ড্রাইভার যখন কোনো ডিভাইসে ভলিউম পরিবর্তন করতে ভলিউম বোতাম ব্যবহার করে তখন ডায়ালগ প্রদর্শিত হয়।

সিস্টেম UI কিভাবে কাজ করে?

সিস্টেম UI হল একটি Android অ্যাপ্লিকেশান যা একটি ডিভাইস চালু হলে চলে৷ অ্যাপটি সিস্টেম সার্ভার দ্বারা প্রতিফলনের মাধ্যমে শুরু হয়েছে। সিস্টেম UI এর ব্যবহারকারী-দৃশ্যমান দিকগুলির জন্য সবচেয়ে প্রাসঙ্গিক এন্ট্রি পয়েন্টগুলি নীচে তালিকাভুক্ত করা হয়েছে৷ অটোমোটিভ-নির্দিষ্ট ক্ষমতার জন্য Android সিস্টেম UI কাস্টমাইজ করতে এই উপাদানগুলি ব্যবহার করুন৷

  • config_statusBarComponent
  • config_systemUIFactoryComponent

CarSystemUI হল সিস্টেম UI প্যাকেজের একটি এক্সটেনশন, যার অর্থ সিস্টেম UI প্যাকেজের ক্লাস এবং সংস্থানগুলি CarSystemUI প্যাকেজ দ্বারা ব্যবহার এবং ওভাররাইড করা যেতে পারে।

সিস্টেম UI কাস্টমাইজ করুন

ওভারলে

আপনি সিস্টেম UI কাস্টমাইজ করার জন্য Android সোর্স কোড পরিবর্তন করতে পারলেও, এটি ভবিষ্যতের Android আপডেটগুলি প্রয়োগ করা আরও কঠিন এবং জটিল করে তোলে৷ পরিবর্তে, অ্যান্ড্রয়েড একটি ওভারলে ডিরেক্টরির ব্যবহার সমর্থন করে, যা আপনাকে উত্স কোড পরিবর্তন না করে রিসোর্স ফাইলগুলি প্রতিস্থাপন করতে সক্ষম করে৷ অ্যান্ড্রয়েড বিল্ড সিস্টেমে, ওভারলে সিস্টেম একটি নিয়ন্ত্রিত পদ্ধতিতে ফাইলগুলিকে ওভাররাইড করে। সমস্ত পরিবর্তিত ফাইল AOSP সোর্স কোডের সম্পূর্ণ ট্রি অতিক্রম না করেই স্পষ্টভাবে চিহ্নিত করা হয়।

ওভারলে ফাইলগুলি অবশ্যই PRODUCT_PACKAGE_OVERLAYS ডিরেক্টরিতে স্থাপন করতে হবে এবং মূল AOSP রুট কাঠামোর মতো একই সাব-ফোল্ডার থাকতে হবে৷ Android 10 বা উচ্চতর জন্য, PRODUCT_PACKAGE_OVERLAYS এতে সেট করা হয়েছে:

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

স্বয়ংচালিত সিস্টেম UI সিস্টেম UI এবং 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 , (সিস্টেম 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/

দুটি প্রাথমিক কাস্টমাইজেশন এন্ট্রি পয়েন্টের বর্ণনা নীচে দেওয়া হয়েছে।

অটোমোটিভ সিস্টেম 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>

স্ট্যাটাস বারটি একটি বিশেষ উইন্ডোিং স্তরে থাকে যাতে বিজ্ঞপ্তি প্যানেল, ব্যবহারকারী সুইচার, হেডস আপ নোটিফিকেশন (HUNs) এবং কীগার্ড অন্তর্ভুক্ত থাকে। এর জন্য বিভিন্ন লেআউট super_status_bar.xml এ অন্তর্ভুক্ত করা হয়েছে।

সিস্টেম UI সোর্স কোড পরিবর্তন

ওভারলেগুলি সিস্টেম UI আচরণকে পর্যাপ্তভাবে কাস্টমাইজ করার জন্য প্রয়োজনীয় নমনীয়তা প্রদান করতে পারে না।

সতর্কতা। অ্যান্ড্রয়েড সোর্স কোডে করা পরিবর্তনগুলি অ্যান্ড্রয়েডের পরবর্তী প্রকাশগুলিতে আপডেট করা কঠিন৷ আমরা দৃঢ়ভাবে সুপারিশ করছি যে আপনি সরাসরি কোড পরিবর্তন করার পরিবর্তে অটোমোটিভ সিস্টেম 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 এ কাস্টমাইজ করা যেতে পারে।

স্ক্রিন লোড হচ্ছে

এন্ট্রি পয়েন্ট নির্বিশেষে যখনই একজন ব্যবহারকারী সুইচ করা হয় তখন লোডিং স্ক্রীন প্রদর্শিত হয়। উদাহরণস্বরূপ, ব্যবহারকারী পিকার বা সেটিংস স্ক্রীনের মাধ্যমে। লোডিং স্ক্রীনটি ফ্রেমওয়ার্ক সিস্টেম UI এর অবিচ্ছেদ্য অংশ এবং CarUserSwitchingDialog শিরোনামের পাবলিক ক্লাসের মানচিত্র। একটি উদাহরণের জন্য উপরের চিত্র 3 দেখুন।

থিমটি Theme_DeviceDefault_Light_Dialog_Alert_UserSwitchingDialog দিয়ে কাস্টমাইজ করা যেতে পারে।

অ্যান্ড্রয়েড ব্যবহারকারী সেট আপ করতে, প্রাথমিক সেটআপ উইজার্ড ফ্লো ড্রাইভারকে নিজের জন্য একটি ব্যবহারকারীর নাম সেট আপ করতে সক্ষম করে। ড্রাইভার যদি তারপরে অ্যান্ড্রয়েড ব্যবহারকারীকে একটি Google অ্যাকাউন্টের সাথে যুক্ত করে, তবে সেই অ্যাকাউন্ট থেকে ব্যবহারকারীর নাম নির্বাচন করা হয়। যাইহোক, যদি ড্রাইভার একটি নাম উল্লেখ করে, উদাহরণস্বরূপ DriverB, এবং তারপরে সেই ব্যবহারকারীর নামটিকে তাদের Google অ্যাকাউন্টে Maddy নামের সাথে যুক্ত করে, তাহলে প্রকৃতভাবে নির্ধারিত নাম (DriverB) পরিবর্তন করা হয় না কারণ সেই নামটি স্পষ্টভাবে সেট করা ছিল। ড্রাইভার শুধুমাত্র সেটিংস মেনুতে নাম পরিবর্তন করতে পারে।

লেআউট car_user_switching_dialog.xml .

OEMs NoActionBar.Fullscreen নামের থিম ব্যবহার করে স্থিতি এবং নেভিগেশন বার লুকিয়ে রাখতে পারে৷ (এটি আসল সিস্টেম UI, গাড়ির রেফারেন্স UI এর জন্য আপডেট করা হয়েছে।) আরও তথ্যের জন্য, কাস্টমাইজেশন দেখুন।

যদিও OEMগুলি ব্যবহারকারীদের পরিবর্তন করার জন্য ব্যবহারকারীর ইন্টারফেস এন্ট্রি পয়েন্ট সরবরাহ করতে পারে, ফলাফলগুলি কখনও কখনও অবাঞ্ছিত হতে পারে। এটি ঘটতে হবে:

  1. OEM কাস্টম লোডিং স্ক্রিন (বা ডায়ালগ) তৈরি করে এবং প্রদর্শন করে।
    • UX-এর জন্য নির্দিষ্ট, OEM কাস্টম লোডিং স্ক্রীন চালু করে যখন একজন ব্যবহারকারী সুইচ করার উপায় নির্বাচন করে, যা ব্যবহারকারীর সুইচ সম্পূর্ণ হলে লুকানো যায়।
    • OEM তাদের পছন্দ অনুযায়ী অগ্রাধিকার উইন্ডো সেট করতে হবে। উদাহরণস্বরূপ, একটি উচ্চ অগ্রাধিকার উইন্ডো প্রকার। অগ্রাধিকার অগ্রাধিকার কীগার্ডের চেয়ে বেশি হতে পারে না
  2. OEM সেট করে config_customUserSwitchUi=true মূল ফ্রেমওয়ার্ক config.xml এ যেমন config_customuserswitchui তে বর্ণিত হয়েছে। ফলস্বরূপ, ফ্রেমওয়ার্ক CarUserSwitchingDialog প্রদর্শন করে না

লকস্ক্রিন কাস্টমাইজ করুন

লকস্ক্রিন সিস্টেম UI এর একটি অবিচ্ছেদ্য অংশ, যা OEM দ্বারা কাস্টমাইজ করা যেতে পারে। প্রবাহটি কাস্টমাইজ করতে, frameworks/base/packages/CarSystemUI/ দিয়ে শুরু করুন।

প্রথমবার ব্যবহারকারী সেটআপ কাস্টমাইজ করুন

সেটআপ উইজার্ড প্রথমবার ব্যবহারকারী সেটআপ সম্পাদন করে। এই, খুব, কাস্টমাইজ করা যেতে পারে. আপনি ব্যবহারকারী তৈরি করতে UserManager API ব্যবহার করতে পারেন। কিছু ক্ষেত্রে, এটি পটভূমিতে প্রয়োগ করা যেতে পারে, যার ফলে সেটআপ উইজার্ড প্রক্রিয়াটি সুগম হয়।