دليل الدمج لمصنعي المعدّات الأصلية

توضِّح هذه الصفحة كيفية معالجة الإدخالات الدوّارة في VHAL وضبط الإصدار لتشمل الخدمة الدوّارة وكيفية تخصيص تجربة استخدام الشاشة الدوّارة في جميع التطبيقات. بالنسبة إلى تطبيقات المصنّعين الأصليين للأجهزة المثبَّتة مسبقًا، مثل مشغّل التطبيقات المقدَّم من المصنّع الأصلي للجهاز، يُرجى الاطّلاع على مكتبة واجهة المستخدم في السيارة (car-ui-library).

VHAL

يتيح جهاز التحكّم الدوار تنفيذ الإجراءات التالية:

  • دفع العنصر للأعلى أو للأسفل أو لليسار أو لليمين
  • تحرَّك في اتجاه عقارب الساعة وعكسها.
  • اضغط على الزر الأوسط.
  • اضغط على زر الرجوع.
  • اضغط على زر الشاشة الرئيسية.
  • اضغط على الأزرار الأخرى، مثل "الهاتف" و"الوسائط".

يُرجى الاطّلاع على hardware/interfaces/automotive/vehicle/2.0/types.hal للحصول على مستندات عن سمات النظام وint32Values المقابلة.

يجب أن يعالج VHAL الإجراءات التالية:

تنبيه

عندما يضغط المستخدم على وحدة التحكّم الدوّارة لليسار، يجب أن يستخدم VHAL سمة HW_KEY_INPUT مع int32Values التالي لإرسال حدث إلى Android:

  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. الاتجاه العمودي

من المفترض أن يؤدي ذلك إلى إنشاء تسلسل الأحداث التالي:

  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 التالية لإرسال حدث إلى Android:

  1. ROTARY_INPUT_TYPE_SYSTEM_NAVIGATION
  2. عرقلة واحدة
  3. استهداف الشاشة

يجب ضبط الطابع الزمني للحدث على الوقت المنقضي بالنانوسثانية.

من المفترض أن يؤدي الدوران بدرجة واحدة (1) باتجاه عقارب الساعة إلى إنشاء الحدث نفسه ولكن مع -1 لعدد نقاط التوقف.

إذا حدثت عمليات قفل متعددة للّفة في الاتجاه نفسه بشكل متتابع وسريعة، يجب أن يدمج VHAL عمليات القفل في حدث واحد حتى لا يتم تحميل النظام بأحداث كثيرة. في هذه الحالة، يجب أن يكون الطابع الزمني للحدث هو وقت حدوث أول توقّف للتناوب. يجب أن يتضمّن int32Values عدد النانو ثانية بين نقاط التثبيت المتعاقبة للدوران.

على سبيل المثال، تسلسل اللفات التالي:

  • في الوقت t0، لفّ المستخدم عروة واحدة بعكس عقارب الساعة.
  • في الوقت t0 + 5 ns، لفّ المستخدم عروة واحدة بعكس عقارب الساعة.
  • في الوقت t0 + 8 ns، لفّ المستخدم عروة واحدة بعكس عقارب الساعة.

من المفترض أن يُنشئ هذا الحدث:

  • الموقع: HW_ROTARY_INPUT
  • الطابع الزمني: t0
  • int32Values:
    1. ROTARY_INPUT_TYPE_SYSTEM_NAVIGATION
    2. -3 (ثلاثة نقاط تثبيت عكس عقارب الساعة)
    3. استهداف الشاشة
    4. 5 نانو ثانية بين الفاصل الأول والثاني
    5. 3 نانو ثانية بين الموضعَين الثاني والثالث

الزر الأوسط

عندما يضغط المستخدم على زر "الوسط"، يجب أن يستخدم VHAL السمة HW_KEY_INPUT مع int32Values التالي لإرسال حدث إلى Android:

  1. ACTION_DOWN
  2. KEYCODE_DPAD_CENTER
  3. استهداف الشاشة

عندما يُفلت المستخدم وحدة التحكّم الدوّارة، يجب أن يستخدِم VHAL السمة ومفتاح الرمز نفسه مع ACTION_UP.

لا تنشئ أحداث تكرار عند الضغط مع الاستمرار على الزر الأوسط.

زر الرجوع

عندما يضغط المستخدم على زر الرجوع، يجب أن يستخدِم VHAL السمة HW_KEY_INPUT مع العنصر int32Values التالي لإرسال حدث إلى Android:

  1. ACTION_DOWN
  2. KEYCODE_BACK
  3. استهداف الشاشة

عندما يُفلت المستخدم وحدة التحكّم الدوّارة، يجب أن يستخدِم VHAL السمة ومفتاح الرمز نفسه مع ACTION_UP.

يجب عدم إنشاء أي أحداث متكرّرة أثناء الضغط مع الاستمرار على الزر الأوسط.

زر الصفحة الرئيسية

يمكنك التعامل مع زر الشاشة الرئيسية كما تتعامل مع زر الرجوع، ولكن باستخدام KEYCODE_HOME بدلاً من KEYCODE_BACK.

الأزرار الأخرى

إذا كان جهاز التحكّم الدوّار يتضمّن أي أزرار إضافية، يمكن لـ VHAL التعامل معها على النحو الذي يريده المصنّع الأصلي للجهاز، لأنّها لا تُعدّ جزءًا من جهاز التحكّم الدوّار من منظور Android. ويتم التعامل مع هذه الأزرار عادةً مثل زرَّي الرجوع والشاشة الرئيسية ولكن باستخدام رموز مفاتيح مختلفة. على سبيل المثال، KEYCODE_CALL أو KEYCODE_MUSIC.

إعدادات التصميم

يتم توفير التنقّل بالتناوب من خلال خدمة تسهيل الاستخدام تُسمى RotaryService. لتضمين هذه الخدمة في صورة النظام لجهازك، أضِف السطر التالي إلىملفmakefile:

PRODUCT_PACKAGES += CarRotaryController

قد تحتاج أيضًا إلى تضمين الحِزم التالية في عمليات إنشاء تصحيح الأخطاء:

  • RotaryPlayground تطبيق مرجعي للأجهزة الدوّارة (راجِع RotaryPlayground).
  • RotaryIME عرض توضيحي لمحرر أسلوب الإدخال (IME) بالوحدة الدوّارة (راجِع محرّرو أساليب الإدخال).
  • CarRotaryImeRRO المحتوى الذي يظهر على سطح الفيديو لـ RotaryIME

يتم تفعيل الخدمة الدوّارة تلقائيًا عند تشغيل الجهاز وعند تنفيذ أحد عمليات التبديل التي يجريها المستخدم. يضمن ذلك إمكانية استخدام المستخدم لوحدة التحكّم الدوّارة أثناء عملية الإعداد.

إذا كنت تستخدم الإصدار نفسه للسيارات التي تتضمّن وحدة تحكّم دوّارة وغير ذلك، أضِف CarRotaryController كما هو موضّح أعلاه لكي يتم تضمين الرمز اللازم في الإصدار. لمنع تفعيل خدمة السيارات الدوّارة في السيارات غير الدوّارة، أنشئ ملف RRO static ملفًا لتراكب سلسلة الموارد rotaryService في ملف packages/services/Car/service بسلسلة فارغة. ستستخدم الإصدار نفسه، ولكن سيكون لديك إعدادات منتجات منفصلة للأجهزة الدوّارة وغير الدوّارة. ولا يتضمّن العنصر الأخير سوى التراكب.

التخصيص

يمكن لمصنّعي المعدّات الأصلية تخصيص منطق العثور على التركيز وإبرازه وبعض العناصر الإضافية من خلال تداخلات الموارد في المواضع التالية:

  • تقع car-ui-library في packages/apps/Car/libs/car-ui-lib
  • يقع "RotaryService" في packages/apps/Car/RotaryController.
  • يقع "Core" في frameworks/base/core.

سجلّ التنبيهات

يمكن لمصنّع المعدّات الأصلية ضبط ما إذا كان سيتم تفعيل كل نوع من النوعَين من سجلّ الإشعارات التلقائية أم لا، وإذا كان الأمر كذلك، حجم ذاكرة التخزين المؤقت وسياسة انتهاء الصلاحية. ويتم تنفيذ كل ذلك من خلال إلغاء موارد مختلفة من مكتبة ui-library للسيارات.

ذاكرة التخزين المؤقت لسجلّ "التركيز"

(Android 11 QPR3 وAndroid 11 Car وAndroid 12)
تخزِّن ذاكرة التخزين المؤقت لكل FocusArea العرض الذي تم التركيز عليه مؤخرًا ضمن FocusArea حتى يمكن التركيز عليه عند الرجوع إلى FocusArea. يمكن ضبط هذه الذاكرة المؤقتة من خلال تراكب موارد مكتبة car-ui-library التالية:

  • car_ui_focus_history_cache_type:
    1. ذاكرة التخزين المؤقت غير مفعّلة.
    2. تنتهي صلاحية ذاكرة التخزين المؤقت بعد مرور بعض الوقت (راجِع المعلومات أدناه).
    3. لن تنتهي صلاحية ذاكرة التخزين المؤقت أبدًا.
  • car_ui_focus_history_expiration_period_ms: عدد المللي ثانية قبل انتهاء صلاحية ذاكرة التخزين المؤقت إذا تم ضبط نوع ذاكرة التخزين المؤقت على اثنين (2) (راجِع أعلاه).

ذاكرة التخزين المؤقت لسجلّ "منطقة التركيز"

(Android 11 QPR3 وAndroid 11 Car وAndroid 12)
تخزِّن هذه الذاكرة المؤقتة سجلًّا للدفعات بحيث يمكن أن يؤدي الدفع في الاتجاه المعاكس إلى إعادة التركيز على FocusArea نفسه. يمكن ضبط هذه الذاكرة المؤقتة من خلال تراكب موارد مكتبة ui-car التالية:

  • car_ui_focus_area_history_cache_type:
    1. ذاكرة التخزين المؤقت غير مفعّلة.
    2. تنتهي صلاحية ذاكرة التخزين المؤقت بعد مرور بعض الوقت (راجِع المعلومات أدناه).
    3. لا تنتهي صلاحية ذاكرة التخزين المؤقت أبدًا.
  • car_ui_focus_area_history_expiration_period_ms: عدد المللي ثانية قبل انتهاء صلاحية ملف التخزين المؤقت في حال ضبط نوع ملف التخزين المؤقت على 2 (راجِع أعلاه).
  • car_ui_clear_focus_area_history_when_rotating: ما إذا كان سيتم إلغاء ذاكرة التخزين المؤقت عندما يدير المستخدم وحدة التحكّم

الدوران

(Android 11 QPR3 وAndroid 11 Car وAndroid 12)
يمكن لمصنّع المعدّات الأصلية إلغاء مَعلمتَي عدد صحيح في RotaryService لتحديد ما إذا كان هناك تسريع، مثل تسريع الماوس، للتدوير:

  • rotation_acceleration_3x_ms: الفاصل الزمني (بالملي ثانية) المستخدَم لتحديد ما إذا كان على Google تسريع دوران جهاز التحكّم من أجل إيقاف دورانه إذا كان الفاصل الزمني بين هذا الموضع المتوقف والموقف المتوقف السابق للدوران أصغر من هذه القيمة، سيتم التعامل معه على أنّه ثلاثة مواضع توقف للدوران. اضبط هذا الخيار على 2147483647 لإيقاف تسريع 3×.
  • rotation_acceleration_2x_ms: مشابهة لـ rotation_acceleration_3x_ms تُستخدَم لزيادة السرعة بمقدار الضِعف. اضبط هذا الخيار على 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),

تمييز التركيز

يمكن للمصنّع الأصلي للجهاز إلغاء الإعداد التلقائي لميزة تسليط الضوء على العنصر المُركّز عليه في إطار عمل Android و العديد من موارد ميزة تسليط الضوء على العنصر المُركّز عليه في car-ui-library.

تمييز التركيز التلقائي

يقدّم إطار عمل Android تمييزًا تلقائيًا للعنصر الذي يتم التركيز عليه من خلال السمة selectableItemBackground. في Theme.DeviceDefault، تشير هذه السمة إلى item_background.xml في Core. يمكن للمصنّع الأصلي للجهاز وضع item_background.xml فوق العنصر لتغيير الصورة القابلة للرسم التي تم ضبطها تلقائيًا لتمييز العنصر الذي يجذب الانتباه.

يجب أن يكون هذا العنصر القابل للرسم عادةً 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.

التركيز على ميزات تمييز الموارد في car-ui-library

يمكن للمصنّع الأصلي للجهاز إلغاء العديد من موارد مكتبة واجهة المستخدم في السيارة للتحكّم في مظهر تمييز العنصر المميّز في المشاهد التي تتضمّن تمييزًا غير مستطيل الشكل (مثل تمييز دائري أو مستطيل الشكل) وفي التطبيقات التي تستخدم مظهرًا لا يستند إلى Theme.DeviceDefault. يجب أن يتمّ دمج هذين الموردَين لكي يكون موضع التمييز في التركيز متوافقًا مع عنصر التمييز التلقائي في التركيز.

(Android 11 QPR3 وAndroid 11 Car وAndroid 12)
تُستخدَم الموارد التالية للإشارة إلى الحالات التي يتم فيها التركيز على عرض معيّن ولكن بدون الضغط عليه:

  • car_ui_rotary_focus_fill_color: لون التعبئة
  • car_ui_rotary_focus_stroke_color: لون الخط المحيطي
  • car_ui_rotary_focus_stroke_width: سمك المخطط

(Android 11 QPR3 وAndroid 11 Car وAndroid 12)
تُستخدَم الموارد التالية للإشارة إلى الحالات التي يتم فيها التركيز على عرض والضغط عليه:

  • car_ui_rotary_focus_pressed_fill_color: لون التعبئة
  • car_ui_rotary_focus_pressed_stroke_color: لون الخط المحيطي
  • car_ui_rotary_focus_pressed_stroke_width: سمك المخطط

يتم أحيانًا منح الزر لون خلفية صلبًا لجذب انتباه المستخدم، كما هو موضّح في المثال أدناه. وقد يصعُب رؤية تمييز التركيز.

زرّ ذو خلفية صلبة
الشكل 2. زرّ بخلفية صلبة

في هذه الحالة، يمكن للمطوّر تحديد تمييز مخصّص للتركيز باستخدام ألوان ثانوية:
  • (Android 11 QPR3 وAndroid 11 Car وAndroid 12)
    car_ui_rotary_focus_fill_secondary_color
    car_ui_rotary_focus_stroke_secondary_color
  • (Android 12)
    car_ui_rotary_focus_pressed_fill_secondary_color
    car_ui_rotary_focus_pressed_stroke_secondary_color

يمكن أن يكون أيّ من الألوان شفافًا ويمكن أن تكون أيّ من السمتَين صفرية إذا أردت مثلاً ملءً فقط أو مخطّطًا فقط.

تمييز FocusArea

(Android 11 QPR3 وAndroid 11 Car وAndroid 12)
FocusArea يمكنه رسم نوعَين من التمييز عند تركيز أحد العناصر الفرعية عليه. ويمكن استخدامهما معًا إذا أردت. تكون هذه الميزة غير مفعّلة تلقائيًا في AOSP، ولكن يمكن تفعيلها من خلال إلغاء مصادر car-ui-library:

  • car_ui_enable_focus_area_foreground_highlight: ارسم تمييزًا فوق FocusArea ونسله. في AOSP، يكون هذا العنصر القابل للرسم هو مخطّط حول FocusArea. يمكن لمصنّعي الأجهزة الأصليين إلغاء car_ui_focus_area_foreground_highlight drawable.
  • car_ui_enable_focus_area_background_highlight: ارسم تمييزًا في أعلى FocusArea ولكن خلف العناصر المشتقة منه. في AOSP، يكون هذا العنصر المرسوم عبارة عن تعبئة صلبة. يمكن لمصنّعي الأجهزة الأصليين إلغاء الرسم car_ui_focus_area_background_highlight.

محرّرو طرق الإدخال

محرّرو أساليب الإدخال (IME) هم طرق إدخال. على سبيل المثال، لوحة مفاتيح على الشاشة

(Android 11 QPR3 وAndroid 11 Car وAndroid 12)
على المصنّع الأصلي للجهاز وضع مورد السلسلة default_touch_input_method في RotaryService لتحديد ComponentName لوحة المفاتيح التفاعلية المستندة إلى اللمس. على سبيل المثال، إذا كان المصنّع الأصلي للجهاز يستخدم واجهة برمجة التطبيقات لمعالجة النصوص المضمّنة في Android Automotive، يجب عليه تحديد com.google.android.apps.automotive.inputmethod/.InputMethodService.

(Android 11 QPR3 وAndroid 11 Car وAndroid 12)
إذا أنشأ المصنّع الأصلي للجهاز IME مخصّصًا للوحة المفاتيح الدوّارة، عليه تحديد ComponentName في مورد rotary_input_method. في حال تمّت تداخل هذه المراجع، يتم استخدام واجهة برمجة التطبيقات المحدّدة للكتابة اليدوية عندما يتفاعل المستخدم مع وحدة التحكّم الأساسية من خلال زرّ "الدفع" و"الدوران" و"الوسط" في وحدة التحكّم الدوّارة. عندما يلمس المستخدم الشاشة، سيتم استخدام واجهة معالجة الإدخال السابقة. لا يؤثر زر الرجوع (والأزرار الأخرى على وحدة التحكّم الدوّارة) في اختيار ميزة IME. إذا لم يتمّ تراكب هذا المورد، لن يتم تبديل IME. لا يتوافق Carboard مع ميزة التحكّم بالتناوب، لذا لا يمكن للمستخدم إدخال نص من خلال وحدة التحكّم بالتناوب إذا لم يقدّم المصنّع الأصلي للجهاز واجهة كتابة باللغة الإنجليزية (IME) تتيح استخدام ميزة التحكّم بالتناوب.

RotaryIME هو واجهة برمجة تطبيقات تجريبية لنظام إدخال البيانات عبر وحدة تحكم دورانية. على الرغم من أنّ هذه الطريقة أساسية، إلا أنّها كافية لمحاولة استخدام ميزة "التبديل التلقائي لطريقة إدخال النصوص" الموضّحة أعلاه. يمكن العثور على رمز المصدر لـ RotaryIME في packages/apps/Car/tests/RotaryIME/.

التذكيرات التلقائية التي تظهر خارج الشاشة

بشكلٍ تلقائي، لا يحدث أي شيء عندما يحاول المستخدم تحريك المحتوى من جانب الشاشة. يمكن للمصنّع الأصلي للجهاز ضبط ما يجب أن يحدث لكل اتجاه من الاتجاهات الأربعة من خلال تحديد أي مجموعة من:

  1. إجراء عالمي يحدّده AccessibilityService على سبيل المثال: GLOBAL_ACTION_BACK.
  2. رمز مفتاح، مثل KEYCODE_BACK
  3. نية لبدء نشاط يتم تمثيلها كعنوان URL

(Android 11 QPR3 وAndroid 11 Car وAndroid 12)
يتم تحديد هذه الإعدادات من خلال تراكب موارد الصفيف التالية في RotaryService:

  • off_screen_nudge_global_actions: صفيف من الإجراءات الشاملة التي يتم تنفيذها عندما يدفع المستخدم العنصر للأعلى أو للأسفل أو لليسار أو لليمين من حافة الشاشة لا يتم تنفيذ أي إجراء عام إذا كان العنصر ذي الصلة في هذه الصفيف هو -1.
  • off_screen_nudge_key_codes: صفيف من الرموز الرئيسية لأحداث النقر لإضافتها عندما يدفع المستخدم الشاشة للأعلى أو للأسفل أو لليسار أو لليمين من حافة الشاشة لا يتم برمجة أي أحداث إذا كان العنصر ذي الصلة في هذه الصفيف هو 0 (KEYCODE_UNKNOWN).
  • off_screen_nudge_intents: صفيف من النوايا لبدء نشاط عندما يدفع المستخدم الشاشة للأعلى أو للأسفل أو لليسار أو لليمين من حافة الشاشة لا يتم إطلاق أي نشاط إذا كان العنصر ذي الصلة في هذه الصفيف فارغًا.

الإعدادات الأخرى

يجب وضع موارد RotaryService التالية فوق بعضها:

  • (Android 11 QPR3 وAndroid 11 Car وAndroid 12)
    config_showHeadsUpNotificationOnBottom: قيمة منطقية للإشارة إلى ما إذا كان ينبغي عرض الإشعارات المنبثقة في أسفل الشاشة بدلاً من أعلاها. يجب أن يكون لهذا الحقل القيمة نفسها التي يمتلكها مورد config_showHeadsUpNotificationOnBottom المنطقي في frameworks/base/packages/CarSystemUI/res/values/config.xml.
  • (Android 11 QPR3 وAndroid 11 Car وAndroid 12)
    notification_headsup_card_margin_horizontal: هامشَا يمين ويسار نافذة الإشعارات المنبثقة. يجب أن تكون هذه القيمة هي نفسها قيمة notification_headsup_card_margin_horizontal مورد السمة في packages/apps/Car/Notification/res/values/dimens.xml.
  • (Android 12)
    excluded_application_overlay_window_titles: صفيف من عناويين النوافذ التي لا يجب اعتبارها نوافذ شاشة مثبّتة. ويجب أن يتضمّن ذلك عناوين لنوافذ التطبيق التي تمثّل TaskViews أو TaskDisplayAreas. لا تحتوي هذه القائمة تلقائيًا إلا على "خرائط Google".

يمكنك تراكب مرجع RotaryService التالي:

  • (Android 11 QPR3 وAndroid 11 Car وAndroid 12)
    long_press_ms: قيمة عددية تمثّل عدد المللي ثانية التي يجب تثبيت فيها زر "الوسط" لتنشيط الضغط لفترة طويلة. يشير الصفر إلى أنّه يجب استخدام مهلة الضغط مع الاستمرار التلقائية للنظام. هذه هي القيمة الافتراضية.