Android Automotive یک رابط کاربری سیستم جدید را ارائه می دهد که به طور خاص برای وسایل نقلیه توسعه یافته است. بیشتر مؤلفههای رابط کاربری سیستم با سرویسهای فریمورک همراه هستند. رابط کاربری سیستم به هر عنصر نمایش داده شده روی صفحه اشاره می کند که بخشی از یک برنامه نیست. رابط کاربری Automotive System (در بسته عنصر CarSystemUI) توسعهای از رابط کاربری سیستم اندروید (در بسته سیستم UI) است که به طور خاص برای وسایل نقلیه سفارشی شده است.
System UI چیست؟
مولفههای مخصوص رابط کاربری Automotive System عبارتند از:
جزء | توضیحات |
---|---|
رابط کاربری صفحه قفل | صفحه ای که از طریق آن کاربران به یک حساب کاربری خاص احراز هویت می شوند. |
نوار ناوبری | نوار سیستمی که میتواند در سمت چپ، پایین یا راست صفحه قرار گیرد و میتواند شامل دکمههای جنبهای برای پیمایش به برنامههای مختلف، تغییر دادن پنل اعلانها و ارائه کنترلهای خودرو (مانند HVAC) باشد. این با اجرای رابط کاربری سیستم Android که دکمههای Back، Home و app-stack را ارائه میکند، متفاوت است. |
نوار وضعیت | نوار سیستم در امتداد صفحه قرار دارد و به عنوان نوار ناوبری عمل می کند. نوار وضعیت همچنین عملکردهایی را برای پشتیبانی ارائه می دهد:
|
رابط کاربری سیستم | به هر عنصر نمایش داده شده روی صفحه که بخشی از یک برنامه نیست اشاره دارد. |
رابط کاربر سوئیچر | صفحه ای که از طریق آن کاربر می تواند کاربر دیگری را انتخاب کند. |
رابط کاربری حجم | زمانی که درایور از دکمه های فیزیکی صدا برای تغییر میزان صدا در دستگاه استفاده می کند، دیالوگ نمایش داده می شود. |
سیستم UI چگونه کار می کند؟
System UI یک برنامه اندروید است که با روشن شدن دستگاه اجرا می شود. برنامه از طریق بازتاب توسط SystemServer شروع می شود. مرتبط ترین نقاط ورودی برای جنبه های قابل مشاهده توسط کاربر سیستم UI در زیر فهرست شده است. از این مؤلفهها برای سفارشی کردن رابط کاربری سیستم Android برای قابلیتهای خاص خودرو استفاده کنید.
-
config_statusBarComponent
-
config_systemUIFactoryComponent
CarSystemUI یک برنامه افزودنی از بسته System UI است، به این معنی که کلاس ها و منابع در بسته System UI می توانند توسط بسته CarSystemUI استفاده و لغو شوند.
رابط کاربری سیستم را سفارشی کنید
روکش ها
در حالی که میتوانید کد منبع اندروید را برای سفارشیسازی رابط کاربری سیستم تغییر دهید، انجام این کار اعمال بهروزرسانیهای آینده اندروید را دشوارتر و پیچیدهتر میکند. در عوض، اندروید از استفاده از دایرکتوری همپوشانی پشتیبانی میکند، که به شما امکان میدهد فایلهای منبع را بدون تغییر کد منبع جایگزین کنید. در سیستم ساخت آندروید، سیستم همپوشانی فایلها را به صورت کنترلشده لغو میکند. تمام فایل های اصلاح شده بدون عبور از کل درخت کد منبع AOSP به وضوح شناسایی می شوند.
فایل های همپوشانی باید در پوشه PRODUCT_PACKAGE_OVERLAYS
قرار گیرند و باید دقیقاً همان زیرپوشه های ساختار اصلی AOSP را داشته باشند. برای Android 10 یا بالاتر، PRODUCT_PACKAGE_OVERLAYS
روی:
PRODUCT_PACKAGE_OVERLAYS := packages/services/Car/car_product/overlay
رابط کاربری Automotive System از منابع System UI و بستههای CarSystemUI استفاده میکند، به این معنی که منابع هر مکان را میتوان با همپوشانیها لغو کرد تا بر ظاهر و ظاهر رابط کاربری Automotive System تأثیر بگذارد.
برای جایگزینی یک فایل، ساختار دایرکتوری فایل در حال جایگزینی را در پوشه /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
، (در System 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/
توضیحات دو نقطه ورودی اصلی سفارشی سازی در زیر ارائه شده است.
نوار ناوبری
رابط کاربری Automotive System می تواند دارای سه نوار ناوبری در سمت چپ، پایین و راست صفحه باشد. قابلیت مشاهده هر نوار سیستم با تنظیمات زیر تغییر می کند:
-
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
گنجانده شده است.
کد منبع رابط کاربری سیستم تغییر می کند
همپوشانیها ممکن است انعطافپذیری لازم برای سفارشیسازی کافی رفتار رابط کاربری سیستم را فراهم نکنند.
هشدار. تغییرات ایجاد شده در کد منبع اندروید در نسخه های بعدی اندروید به سختی به روز می شوند. ما قویاً توصیه می کنیم به جای تغییر مستقیم کد، کد رابط کاربری Automotive System را گسترش دهید. به این ترتیب، کد منبع رابط کاربری Automotive System زیربنایی را می توان با حداقل تضادهای ادغام ارتقا داد، زیرا همه سفارشی سازی ها از طریق سطوح شناخته شده API پیاده سازی می شوند.
بیشتر جنبه های رابط کاربری سیستم را می توان از طریق این دو نقطه ورودی سفارشی کرد:
-
config_statusBarComponent
-
config_systemUIFactoryComponent
به عنوان مثال، اگر کلاسی به نام com.android.systemui.statusbar.car.custom.CustomCarStatusBar
ایجاد می کنید که CarStatusBar
گسترش می دهد، config_statusBarComponent
را به روز کنید تا به این مؤلفه جدید اشاره کند. گسترش این کلاس، سفارشی سازی اکثر عناصر مربوط به نوار سیستم و منطق اعلان ها را امکان پذیر می کند.
به همین ترتیب، می توانید CustomCarSystemUIFactory
ایجاد کرده و آن را در config_systemUIFactoryComponent
قرار دهید. از این کلاس برای به روز رسانی عملکرد VolumeUI و صفحه قفل استفاده کنید.
تغییر و باز کردن قفل کاربر را سفارشی کنید
مطالب زیر نحوه سفارشی کردن تجربه تعویض کاربر را شرح می دهد.
مدت | توضیحات |
---|---|
کیگارد | گفتگوی تمام صفحه برای جلوگیری از تعامل تصادفی با برنامه پیش زمینه. هنگامی که چندین کاربر راه اندازی شده اند، از حریم خصوصی هر کاربر محافظت می کند. |
در حال بارگیری گفتگو | صفحه بارگیری هنگام جابجایی بین کاربران نمایش داده می شود. |
صفحه قفل، جسور | صفحهای که از شخص میخواهد پین، الگو یا رمز عبور وارد کند. |
کاربر | کاربر اندروید. |
انتخابگر کاربر | صفحه انتخابگر کاربر هنگام بوت شدن دستگاه نمایش داده می شود. |
تعویض کننده کاربر | هنگام تعویض صفحه از QuickSettings، تعویضگر کاربر نمایش داده می شود. |
تغییر کاربری را سفارشی کنید
کیگارد و جسور
در سیستمعامل Android Automotive، صفحه کلید با انتخابگر کاربر تنها زمانی نمایش داده میشود که کاربر روی دکمه لغو روی صفحه قفل کلیک کند. صفحه کلید در زیر نشان داده شده است.
شکل 1. صفحه کلید
همانطور که در زیر نشان داده شده است، هنگامی که کاربر یک نوع حریم خصوصی را برای باز کردن قفل دستگاه انتخاب کرده است، یک صفحه قفل با یک پرکننده نمایش داده می شود.
شکل 2. صفحه قفل.
هنگامی که قفل تنظیم شده است که به صورت دستی برق را روشن یا خاموش کند، از دستورالعمل زیر استفاده کنید:
adb shell input keyevent 26
انتخابگر کاربر
هنگامی که دستگاهی که در نوار وضعیت رابط کاربری سیستم خودرو و Maps راه اندازی مجدد می شود، صفحه انتخابگر کاربر نمایش داده می شود. برای کسب اطلاعات بیشتر، FullscreenUserSwitcher
را ببینید.
شکل 3. صفحه انتخابگر کاربر
طرح بندی این صفحه را می توان در car_fullscreen_user_switcher.xml
سفارشی کرد.
در حال بارگذاری صفحه نمایش
صفحه بارگیری هر زمان که کاربر تغییر می کند، بدون توجه به نقطه ورود، نمایش داده می شود. به عنوان مثال، از طریق انتخابگر کاربر یا صفحه تنظیمات. صفحه بارگیری یکپارچه با چارچوب System UI است و به کلاس عمومی با عنوان CarUserSwitchingDialog
نقشه میدهد. برای مثال به شکل 3 بالا مراجعه کنید.
طرح زمینه را می توان با Theme_DeviceDefault_Light_Dialog_Alert_UserSwitchingDialog
سفارشی کرد.
برای راهاندازی کاربر اندروید، جریان اولیه Setup Wizard به راننده امکان میدهد یک نام کاربری برای خود تنظیم کند. اگر درایور کاربر اندروید را با یک حساب Google مرتبط کند، نام کاربری از آن حساب انتخاب میشود. با این حال، اگر درایور یک نام، به عنوان مثال DriverB، مشخص کند، و سپس آن نام کاربری را به حساب Google خود با نام Maddy مرتبط کند، نام اختصاص داده شده اولیه (DriverB) تغییر نمی کند زیرا آن نام به صراحت تنظیم شده است. راننده فقط می تواند نام را در منوی تنظیمات تغییر دهد.
طرح بندی را می توان در car_user_switching_dialog.xml .
OEM ها می توانند وضعیت و نوار پیمایش را با استفاده از موضوعی به نام NoActionBar.Fullscreen
پنهان کنند. (این رابط کاربری اصلی سیستم است که برای رابط کاربری مرجع خودرو بهروزرسانی شده است.) برای اطلاعات بیشتر، سفارشیسازی را ببینید.
در حالی که OEM ها می توانند نقاط ورودی رابط کاربری را برای تعویض کاربران فراهم کنند، نتایج ممکن است گاهی نامطلوب باشد. اگر این اتفاق بیفتد:
- OEM صفحه بارگیری سفارشی (یا گفتگو) را ایجاد و نمایش می دهد.
- مخصوص UX، OEM صفحه بارگیری سفارشی را هنگامی که کاربر وسیله ای را برای تغییر انتخاب می کند راه اندازی می کند، که وقتی سوئیچ کاربر کامل شد می تواند پنهان شود.
- OEM باید پنجره اولویت را مطابق با اولویت خود تنظیم کند. به عنوان مثال، یک نوع پنجره با اولویت بالاتر. اولویت اولویت نمی تواند از اولویت Keyguard بیشتر باشد.
- OEM
config_customUserSwitchUi=true
در چارچوب اصلیconfig.xml
همانطور که درconfig_customuserswitchui
توضیح داده شده است تنظیم می کند. در نتیجه، چارچوبCarUserSwitchingDialog
را نمایش نمی دهد.
صفحه قفل را سفارشی کنید
صفحه قفل بخشی جدایی ناپذیر از رابط کاربری سیستم است که می تواند توسط OEM سفارشی شود. برای سفارشی کردن جریان، با frameworks/base/packages/CarSystemUI/
شروع کنید.
سفارشی کردن راه اندازی کاربر برای اولین بار
Setup Wizard برای اولین بار تنظیمات کاربر را انجام می دهد. این نیز می تواند سفارشی شود. برای ایجاد کاربر می توانید از UserManager API استفاده کنید. در برخی موارد، این را می توان در پس زمینه پیاده سازی کرد و در نتیجه فرآیند Setup Wizard را ساده کرد.