راهنمای یکپارچه سازی برای OEM ها

این صفحه نحوه پردازش ورودی‌های چرخشی در VHAL، پیکربندی سیستم شما برای گنجاندن سرویس چرخشی و نحوه سفارشی‌سازی تجربه چرخشی در تمام برنامه‌ها را شرح می‌دهد. برای برنامه‌های از پیش نصب‌شده OEM، مانند یک لانچر ارائه‌شده توسط OEM، به کتابخانه رابط کاربری خودرو (car-ui-library) مراجعه کنید.

وهال

یک کنترل‌کننده چرخشی از اقدامات زیر پشتیبانی می‌کند:

  • به بالا، پایین، چپ و راست تکان دهید.
  • در جهت عقربه‌های ساعت و خلاف جهت عقربه‌های ساعت بچرخانید.
  • دکمه وسط را فشار دهید.
  • دکمه برگشت را فشار دهید.
  • دکمه خانه را فشار دهید.
  • دکمه‌های دیگر، مانند تلفن و رسانه را فشار دهید.

برای مستندات مربوط به ویژگی‌های سیستم و int32Values مربوطه، به hardware/interfaces/automotive/vehicle/2.0/types.hal مراجعه کنید.

VHAL باید این اقدامات را انجام دهد:

سقلمه زدن

وقتی کاربر کنترلر چرخشی را به سمت راست فشار می‌دهد، VHAL باید از ویژگی HW_KEY_INPUT با int32Values ​​زیر برای ارسال یک رویداد به اندروید استفاده کند:

  1. ACTION_DOWN
  2. KEYCODE_SYSTEM_NAVIGATION_RIGHT
  3. نمایش هدف.

وقتی کاربر کنترلر چرخشی را رها می‌کند، VHAL باید از همان ویژگی و کد کلید ACTION_UP استفاده کند. برای حرکت در جهت‌های دیگر باید از کدهای کلید مربوطه استفاده شود.

کدهای کلیدی برای خطوط مورب وجود ندارد، اما VHAL می‌تواند یک رویداد افقی و عمودی را برای تولید یک خط مورب ترکیب کند، البته اگر سخت‌افزار از خطوط مورب پشتیبانی کند. برای مثال، حرکت به بالا و چپ باید نتایج زیر را تولید کند:

  • HW_KEY_INPUT KEYCODE_SYSTEM_NAVIGATION_LEFT ACTION_DOWN
  • HW_KEY_INPUT KEYCODE_SYSTEM_NAVIGATION_UP ACTION_DOWN

در هر دو ترتیب (و متعاقباً) رها کردن کنترلر چرخشی باید نتایج زیر را به همراه داشته باشد:

  • HW_KEY_INPUT KEYCODE_SYSTEM_NAVIGATION_LEFT ACTION_UP
  • HW_KEY_INPUT KEYCODE_SYSTEM_NAVIGATION_UP ACTION_UP

کاربر می‌تواند قبل از رها کردن، کنترلر چرخشی را در جهت عمود فشار دهد. برای مثال، سناریوی زیر:

جهت عمود
شکل ۱. جهت عمود

این باید دنباله ای از رویدادها را ایجاد کند:

  1. HW_KEY_INPUT KEYCODE_SYSTEM_NAVIGATION_LEFT ACTION_DOWN
  2. HW_KEY_INPUT KEYCODE_SYSTEM_NAVIGATION_UP ACTION_DOWN
  3. HW_KEY_INPUT KEYCODE_SYSTEM_NAVIGATION_LEFT ACTION_UP
  4. HW_KEY_INPUT KEYCODE_SYSTEM_NAVIGATION_UP ACTION_UP

در حالی که کنترلر چرخشی در یک جهت نگه داشته شده است، هیچ رویداد تکراری نباید ایجاد شود.

چرخش

وقتی کاربر کنترلر چرخشی را به اندازه یک محور در جهت عقربه‌های ساعت می‌چرخاند (کلیک می‌کند)، VHAL باید از ویژگی HW_ROTARY_INPUT با int32Values ​​زیر برای ارسال یک رویداد به اندروید استفاده کند:

  1. ROTARY_INPUT_TYPE_SYSTEM_NAVIGATION
  2. یک (1) ضامن.
  3. نمایش هدف.

زمان رویداد باید بر اساس زمان سپری شده بر حسب نانوثانیه تنظیم شود.

چرخش یک (1) پایه در خلاف جهت عقربه‌های ساعت باید همان رویداد را ایجاد کند، اما با -1 برای تعداد پایه‌ها.

اگر چندین محور چرخش در یک جهت و به سرعت و پشت سر هم رخ دهند، VHAL باید محورها را در یک رویداد واحد ترکیب کند تا سیستم با رویدادها دچار اضافه بار نشود. در این حالت، مهر زمانی رویداد باید زمانی باشد که اولین محور چرخش رخ داده است. مقادیر int32Values ​​باید شامل تعداد نانوثانیه‌ها بین محورهای چرخش متوالی باشد.

برای مثال، دنباله چرخش‌های زیر:

  • در زمان t0، کاربر یکی از پایه‌ها را در خلاف جهت عقربه‌های ساعت چرخاند.
  • در زمان t0 + 5 نانوثانیه، کاربر یکی از پایه‌ها را در خلاف جهت عقربه‌های ساعت چرخاند.
  • در زمان t0 + 8 ns، کاربر یکی از پایه‌ها را در خلاف جهت عقربه‌های ساعت چرخاند.

باید این رویداد را ایجاد کند:

  • ویژگی: HW_ROTARY_INPUT
  • مهر زمان: t0
  • int32Values :
    1. ROTARY_INPUT_TYPE_SYSTEM_NAVIGATION
    2. -۳ (سه اهرم در خلاف جهت عقربه‌های ساعت).
    3. نمایش هدف.
    4. ۵ نانوثانیه بین گیره اول و دوم.
    5. ۳ نانوثانیه بین ضامن دوم و سوم.

دکمه مرکزی

وقتی کاربر دکمه وسط را فشار می‌دهد، VHAL باید از ویژگی HW_KEY_INPUT با int32Values ​​زیر برای ارسال یک رویداد به اندروید استفاده کند:

  1. ACTION_DOWN
  2. KEYCODE_DPAD_CENTER
  3. نمایش هدف.

وقتی کاربر کنترلر چرخشی را رها می‌کند، VHAL باید از همان ویژگی و کد کلید با ACTION_UP استفاده کند.

وقتی دکمه وسط پایین نگه داشته شده است، رویدادهای تکراری ایجاد نکنید.

دکمه برگشت

وقتی کاربر دکمه برگشت را فشار می‌دهد، VHAL باید از ویژگی HW_KEY_INPUT با int32Values ​​زیر برای ارسال یک رویداد به اندروید استفاده کند:

  1. ACTION_DOWN
  2. KEYCODE_BACK
  3. نمایش هدف.

وقتی کاربر کنترلر چرخشی را رها می‌کند، VHAL باید از همان ویژگی و کد کلید با ACTION_UP استفاده کند.

هیچ رویداد تکراری نباید در حالی که دکمه وسط پایین نگه داشته شده است، ایجاد شود.

دکمه خانه

دکمه‌ی خانه (Home) را مانند دکمه‌ی برگشت (Back) مدیریت کنید، اما به جای KEYCODE_HOME از KEYCODE_BACK استفاده کنید.

دکمه‌های دیگر

اگر کنترلر چرخشی شامل دکمه‌های اضافی باشد، VHAL می‌تواند آنها را به هر شکلی که سازنده اصلی (OEM) دوست داشته باشد، مدیریت کند، زیرا از دیدگاه اندروید، آنها بخشی از کنترلر چرخشی محسوب نمی‌شوند. این دکمه‌ها معمولاً مانند دکمه‌های Back و Home اما با کدهای کلید متفاوت مدیریت می‌شوند. به عنوان مثال، KEYCODE_CALL یا KEYCODE_MUSIC .

پیکربندی ساخت

ناوبری چرخشی توسط یک سرویس دسترسی به نام RotaryService ارائه می‌شود. برای گنجاندن این سرویس در تصویر سیستم دستگاه خود، خط زیر را به فایل makefile خود اضافه کنید:

PRODUCT_PACKAGES += CarRotaryController

همچنین می‌توانید بسته‌های زیر را در ساخت‌های اشکال‌زدایی (debug builds) لحاظ کنید:

  • RotaryPlayground یک برنامه مرجع برای روتاری (به RotaryPlayground مراجعه کنید).
  • RotaryIME یک IME چرخشی نمایشی (به ویرایشگرهای روش ورودی مراجعه کنید).
  • CarRotaryImeRRO لایه‌ی رویی برای RotaryIME .

سرویس چرخشی به طور خودکار هنگام بوت شدن دستگاه و هنگام تغییر کاربر فعال می‌شود. این تضمین می‌کند که کاربر می‌تواند در طول راه‌اندازی از کنترلر چرخشی استفاده کند.

اگر از یک ساختار یکسان برای خودروهای دارای کنترلر چرخشی و بدون آن استفاده می‌کنید، CarRotaryController همانطور که در بالا نشان داده شده است اضافه کنید تا کد لازم در ساختار گنجانده شود. برای جلوگیری از فعال شدن سرویس چرخشی در خودروهای غیر چرخشی، یک RRO استاتیک ایجاد کنید تا منبع رشته rotaryService را در packages/services/Car/service با یک رشته خالی همپوشانی کند. شما از یک ساختار یکسان استفاده خواهید کرد، اما پیکربندی‌های محصول جداگانه‌ای برای دستگاه‌های چرخشی و غیر چرخشی خواهید داشت. فقط دومی شامل پوشش است.

سفارشی‌سازی

تولیدکنندگان تجهیزات اصلی (OEM) می‌توانند منطق یافتن فوکوس، هایلایت فوکوس و برخی موارد اضافی را از طریق پوشش منابع در مکان‌های زیر سفارشی‌سازی کنند:

  • کتابخانه car-ui در packages/apps/Car/libs/car-ui-lib قرار دارد.
  • RotaryService در packages/apps/Car/RotaryController قرار دارد.
  • Core در frameworks/base/core قرار دارد.

تاریخچه‌ی تلنگر

تولیدکننده اصلی (OEM) می‌تواند پیکربندی کند که آیا هر یک از دو نوع تاریخچه nudge فعال باشد یا خیر و در صورت فعال بودن، اندازه حافظه پنهان و سیاست انقضا را تعیین کند. همه این کارها با لغو منابع مختلف کتابخانه رابط کاربری خودرو (car-ui-library) انجام می‌شود.

تمرکز بر حافظه پنهان تاریخچه

( اندروید ۱۱ QPR3، اندروید ۱۱ خودرو، اندروید ۱۲ )
این حافظه پنهان به ازای هر FocusArea آخرین نمای فوکوس شده را در FocusArea ذخیره می‌کند تا هنگام بازگشت به FocusArea ، بتوان آن را فوکوس کرد. این حافظه پنهان را می‌توان با همپوشانی منابع کتابخانه car-ui زیر پیکربندی کرد:

  • car_ui_focus_history_cache_type :
    1. حافظه پنهان غیرفعال است.
    2. حافظه پنهان پس از مدتی منقضی می‌شود (به زیر مراجعه کنید).
    3. حافظه پنهان هرگز منقضی نمی‌شود.
  • car_ui_focus_history_expiration_period_ms : اگر نوع کش روی دو (2) تنظیم شده باشد (به بالا مراجعه کنید)، چند میلی‌ثانیه قبل از انقضای کش باقی می‌ماند.

حافظه پنهان تاریخچه FocusArea

( اندروید ۱۱ QPR3، اندروید ۱۱ خودرو، اندروید ۱۲ )
این حافظه پنهان، تاریخچه‌ای از حرکات را ذخیره می‌کند تا حرکت در جهت مخالف بتواند فوکوس را به همان FocusArea برگرداند. این حافظه پنهان را می‌توان با همپوشانی منابع car-ui-library زیر پیکربندی کرد:

  • car_ui_focus_area_history_cache_type :
    1. حافظه پنهان غیرفعال است.
    2. حافظه پنهان پس از مدتی منقضی می‌شود (به زیر مراجعه کنید).
    3. حافظه پنهان (Cache) هرگز منقضی نمی‌شود.
  • car_ui_focus_area_history_expiration_period_ms : اگر نوع کش روی ۲ تنظیم شده باشد (به بالا مراجعه کنید)، چند میلی‌ثانیه قبل از انقضای کش باقی می‌ماند.
  • car_ui_clear_focus_area_history_when_rotating : مشخص می‌کند که آیا وقتی کاربر کنترلر را می‌چرخاند، کش خالی شود یا خیر.

چرخش

( اندروید ۱۱ QPR3، اندروید ۱۱ خودرو، اندروید ۱۲ )
سازنده اصلی (OEM) می‌تواند دو منبع عدد صحیح را در RotaryService لغو کند تا مشخص کند که آیا شتابی، مانند شتاب ماوس، برای چرخش وجود دارد یا خیر:

  • rotation_acceleration_3x_ms : بازه زمانی (برحسب میلی‌ثانیه) که برای تصمیم‌گیری در مورد اینکه آیا گوگل باید چرخش کنترلر را برای یک محور چرخش شتاب دهد یا خیر، استفاده می‌شود. اگر فاصله بین این محور و محور چرخش قبلی کوچکتر از این مقدار باشد، به عنوان سه محور چرخش در نظر گرفته می‌شود. برای غیرفعال کردن شتاب ۳x، این مقدار را روی ۲۱۴۷۴۸۳۶۴۷ تنظیم کنید.
  • rotation_acceleration_2x_ms : مشابه rotation_acceleration_3x_ms . برای شتاب ۲x استفاده می‌شود. برای غیرفعال کردن شتاب ۲x، این مقدار را روی 2147483647 تنظیم کنید.

شتاب‌دهی زمانی بهترین عملکرد را دارد که برای هر محور چرخش، همانطور که VHAL الزامی کرده است، مهرهای زمانی جداگانه‌ای وجود داشته باشد. اگر این موارد در دسترس نباشند، RotaryService فرض می‌کند که محورهای چرخش به طور مساوی از هم فاصله دارند.

/**
     * Property to feed H/W rotary events to android
     *
     * int32Values[0] : RotaryInputType identifying which rotary knob rotated
     * int32Values[1] : number of detents (clicks), positive for clockwise,
     *                  negative for counterclockwise
     * int32Values[2] : target display defined in VehicleDisplay. Events not
     *                  tied to specific display must be sent to
     *                  VehicleDisplay#MAIN.
     * int32values[3 .. 3 + abs(number of detents) - 2]:
     *                  nanosecond deltas between pairs of consecutive detents,
     *                  if the number of detents is > 1 or < -1
     *
     * VehiclePropValue.timestamp: when the rotation occurred. If the number of
     *                             detents is > 1 or < -1, this is when the
     *                             first detent of rotation occurred.
     *
     * @change_mode VehiclePropertyChangeMode:ON_CHANGE
     * @data_enum RotaryInputType
     * @access VehiclePropertyAccess:READ
     */
    HW_ROTARY_INPUT = (
        0x0A20
        | VehiclePropertyGroup:SYSTEM
        | VehiclePropertyType:INT32_VEC
        | VehicleArea:GLOBAL),

هایلایت فوکوس

تولیدکننده اصلی (OEM) می‌تواند هایلایت فوکوس پیش‌فرض را در چارچوب اندروید و چندین منبع هایلایت فوکوس را در کتابخانه رابط کاربری خودرو (car-ui-library) لغو کند.

هایلایت فوکوس پیش‌فرض

چارچوب اندروید از طریق ویژگی selectableItemBackground یک هایلایت فوکوس پیش‌فرض ارائه می‌دهد. در Theme.DeviceDefault ، این ویژگی به item_background.xml در Core اشاره دارد. OEM می‌تواند item_background.xml را برای تغییر هایلایت فوکوس پیش‌فرض drawable، روی آن قرار دهد.

این drawable معمولاً باید یک StateListDrawable باشد که پس‌زمینه را بر اساس ترکیبات مختلف حالت‌ها، از جمله android:state_focused و android:state_pressed تنظیم می‌کند. وقتی کاربر از کنترلر چرخشی برای فوکوس کردن یک نما استفاده می‌کند، android:state_focused true خواهد داشت، اما android:state_pressed false خواهد داشت. اگر کاربر سپس دکمه وسط کنترلر چرخشی را فشار دهد، تا زمانی که کاربر دکمه را نگه داشته است، هر دو android:state_focused و android:state_pressed true خواهند داشت. وقتی کاربر دکمه را رها می‌کند، فقط android:state_focused true خود را حفظ می‌کند.

کتابخانه car-ui-library از یک تم مشتق شده از Theme.DeviceDefault استفاده می‌کند. در نتیجه، این لایه رویی روی برنامه‌هایی که از این کتابخانه استفاده می‌کنند و برنامه‌هایی که از هر تم مشتق شده از Theme.DeviceDefault استفاده می‌کنند، تأثیر می‌گذارد. این لایه روی برنامه‌هایی که از تم غیرمرتبط مانند Theme.Material استفاده می‌کنند، تأثیری نخواهد داشت.

تمرکز بر منابع برجسته در کتابخانه رابط کاربری خودرو

سازنده اصلی (OEM) می‌تواند چندین منبع کتابخانه رابط کاربری خودرو (car-ui-library) را برای کنترل نحوه نمایش هایلایت فوکوس در نماهایی با هایلایت فوکوس غیرمستطیلی (مانند گرد یا قرصی شکل) و در برنامه‌هایی که از تمی استفاده می‌کنند که از Theme.DeviceDefault مشتق نمی‌شود، لغو کند. این منابع باید روی هم قرار گیرند تا هایلایت فوکوس با هایلایت فوکوس پیش‌فرض قابل ترسیم سازگار باشد.

( اندروید ۱۱ QPR3، اندروید ۱۱ خودرو، اندروید ۱۲ )
منابع زیر برای نشان دادن زمانی که یک نما فوکوس شده اما فشرده نشده است، استفاده می‌شوند:

  • car_ui_rotary_focus_fill_color : رنگ پرکننده.
  • car_ui_rotary_focus_stroke_color : رنگ خطوط بیرونی.
  • car_ui_rotary_focus_stroke_width : ضخامت طرح کلی.

( اندروید ۱۱ QPR3، اندروید ۱۱ خودرو، اندروید ۱۲ )
منابع زیر برای نشان دادن زمان فوکوس و فشرده شدن یک نما استفاده می‌شوند:

  • car_ui_rotary_focus_pressed_fill_color : رنگ پرکننده.
  • car_ui_rotary_focus_pressed_stroke_color : رنگ خطوط بیرونی.
  • car_ui_rotary_focus_pressed_stroke_width : ضخامت طرح کلی.

گاهی اوقات برای جلب توجه کاربر، به یک دکمه رنگ پس‌زمینه‌ی یکدستی داده می‌شود، مانند مثال نشان داده شده. این ممکن است دیدن هایلایت فوکوس را دشوار کند.

دکمه با پس‌زمینه ثابت
شکل ۲. دکمه با پس‌زمینه‌ی ثابت

در این شرایط، توسعه‌دهنده می‌تواند با استفاده از رنگ‌های ثانویه ، یک هایلایت فوکوس سفارشی تعیین کند:
  • ( Android 11 QPR3, Android 11 Car, Android 12 )
    car_ui_rotary_focus_fill_secondary_color
    car_ui_rotary_focus_stroke_secondary_color
  • ( اندروید ۱۲ )
    car_ui_rotary_focus_pressed_fill_secondary_color
    car_ui_rotary_focus_pressed_stroke_secondary_color

هر یک از رنگ‌ها می‌توانند شفاف باشند و هر دو بُعد می‌توانند صفر باشند، اگر مثلاً فقط یک پر یا فقط یک طرح کلی می‌خواستید.

هایلایت FocusArea

( اندروید ۱۱ QPR3، اندروید ۱۱ خودرو، اندروید ۱۲ )
FocusArea می‌تواند دو نوع هایلایت را زمانی که یکی از فرزندانش در حالت فوکوس قرار دارد، رسم کند. در صورت تمایل، می‌توان از هر دو به صورت ترکیبی استفاده کرد. این ویژگی به طور پیش‌فرض در AOSP غیرفعال است، اما می‌توان با بازنویسی منابع car-ui-library آن را فعال کرد:

  • car_ui_enable_focus_area_foreground_highlight : Draw a highlight on top of the FocusArea and its descendants. In AOSP, this drawable is an outline around the FocusArea . OEMs can override the car_ui_focus_area_foreground_highlight drawable.
  • car_ui_enable_focus_area_background_highlight : یک هایلایت روی FocusArea اما پشت فرزندان آن رسم می‌کند. در AOSP، این drawable یک fill محکم است. OEMها می‌توانند drawable car_ui_focus_area_background_highlight نادیده بگیرند.

ویرایشگرهای روش ورودی

ویرایشگرهای روش ورودی (IME) روش‌های ورودی هستند. برای مثال، یک صفحه کلید روی صفحه نمایش.

( اندروید ۱۱ QPR3، اندروید ۱۱ خودرو، اندروید ۱۲ )
تولیدکننده اصلی (OEM) باید منبع رشته‌ای default_touch_input_method را در RotaryService برای مشخص کردن ComponentName مربوط به IME مبتنی بر لمس، همپوشانی کند. برای مثال، اگر تولیدکننده اصلی (OEM) از IME ارائه شده با Android Automotive استفاده می‌کند، باید com.google.android.apps.automotive.inputmethod/.InputMethodService را مشخص کند.

( اندروید ۱۱ QPR3، اندروید ۱۱ خودرو، اندروید ۱۲ )
اگر تولیدکننده اصلی (OEM) یک IME مخصوص برای کنترلر چرخشی ایجاد کرده باشد، باید ComponentName آن را در منبع rotary_input_method مشخص کند. اگر این منبع همپوشانی داشته باشد، هر زمان که کاربر از طریق دکمه‌های فشاری، چرخشی و مرکزی کنترلر چرخشی با واحد هد تعامل داشته باشد، از IME مشخص شده استفاده می‌شود. وقتی کاربر صفحه را لمس می‌کند، از IME قبلی استفاده خواهد شد. دکمه برگشت (و سایر دکمه‌های روی کنترلر چرخشی) هیچ تاثیری در انتخاب IME ندارند. اگر این منبع همپوشانی نداشته باشد، هیچ تغییر IME رخ نمی‌دهد. Carboard از کنترلر چرخشی پشتیبانی نمی‌کند، بنابراین اگر تولیدکننده اصلی (OEM) یک IME چرخشی ارائه نکرده باشد، کاربر نمی‌تواند از طریق کنترلر چرخشی متن وارد کند.

RotaryIME یک IME چرخشی آزمایشی است. اگرچه ابتدایی است، اما برای امتحان کردن تعویض خودکار IME که در بالا توضیح داده شد، کافی است. کد منبع RotaryIME را می‌توانید در packages/apps/Car/tests/RotaryIME/ پیدا کنید.

تلنگرهای خارج از صفحه

به طور پیش‌فرض، وقتی کاربر سعی می‌کند از لبه صفحه نمایش حرکت کند، هیچ اتفاقی نمی‌افتد. تولیدکننده اصلی (OEM) می‌تواند با مشخص کردن ترکیبی از موارد زیر، آنچه را که باید برای هر یک از چهار جهت رخ دهد، پیکربندی کند:

  1. یک اقدام سراسری که توسط AccessibilityService تعریف شده است. برای مثال، GLOBAL_ACTION_BACK .
  2. یک کد کلید، مانند KEYCODE_BACK .
  3. یک هدف (intent) برای اجرای یک اکتیویتی که به صورت یک URL نمایش داده می‌شود.

( اندروید ۱۱ QPR3، اندروید ۱۱ خودرو، اندروید ۱۲ )
این موارد با همپوشانی منابع آرایه زیر در RotaryService مشخص می‌شوند:

  • off_screen_nudge_global_actions : آرایه‌ای از اقدامات سراسری که وقتی کاربر لبه صفحه نمایش را به بالا، پایین، چپ یا راست حرکت می‌دهد، اجرا می‌شوند. اگر عنصر مربوطه در این آرایه -۱ باشد، هیچ اقدام سراسری انجام نمی‌شود.
  • off_screen_nudge_key_codes : آرایه‌ای از کدهای کلید رویدادهای کلیک که هنگام حرکت کاربر به بالا، پایین، چپ یا راست از لبه صفحه نمایش تزریق می‌شوند. اگر عنصر مربوطه در این آرایه 0 باشد ( KEYCODE_UNKNOWN )، هیچ رویدادی تزریق نمی‌شود.
  • off_screen_nudge_intents : آرایه‌ای از intentها برای اجرای یک activity زمانی که کاربر از لبه صفحه نمایش به بالا، پایین، چپ یا راست حرکت می‌کند. اگر عنصر مربوطه در این آرایه خالی باشد، هیچ activity اجرا نمی‌شود.

سایر پیکربندی‌ها

شما باید منابع RotaryService زیر را روی هم قرار دهید:

  • ( اندروید ۱۱ QPR3، اندروید ۱۱ خودرو، اندروید ۱۲ )
    config_showHeadsUpNotificationOnBottom : مقداری بولی برای نشان دادن اینکه آیا اعلان‌های هشدار باید در پایین صفحه نمایش داده شوند یا در بالا. این مقدار باید با مقدار منبع بولی config_showHeadsUpNotificationOnBottom در frameworks/base/packages/CarSystemUI/res/values/config.xml یکسان باشد.
  • ( اندروید ۱۱ QPR3، اندروید ۱۱ خودرو، اندروید ۱۲ )
    notification_headsup_card_margin_horizontal : حاشیه چپ و راست برای پنجره اعلان‌های head-up. این باید مقدار یکسانی با منبع dimen مربوط به notification_headsup_card_margin_horizontal در packages/apps/Car/Notification/res/values/dimens.xml داشته باشد.
  • ( اندروید ۱۲ )
    excluded_application_overlay_window_titles : آرایه‌ای از عناوین پنجره‌هایی که نباید به عنوان پنجره‌های همپوشانی در نظر گرفته شوند. این باید شامل عناوین پنجره‌های برنامه‌هایی باشد که نمایانگر TaskViews یا TaskDisplayAreas هستند. به طور پیش‌فرض، این لیست فقط شامل "نقشه‌ها" است.

شما می‌توانید منبع RotaryService زیر را روی هم قرار دهید:

  • ( اندروید ۱۱ QPR3، اندروید ۱۱ خودرو، اندروید ۱۲ )
    long_press_ms : مقدار صحیحی که نشان می‌دهد دکمه وسط چند میلی‌ثانیه باید نگه داشته شود تا یک فشار طولانی مدت اعمال شود. صفر نشان می‌دهد که زمان پیش‌فرض سیستم برای فشار طولانی مدت باید استفاده شود. این مقدار پیش‌فرض است.