คู่มือบูรณาการสำหรับ OEM

หน้านี้อธิบายวิธีประมวลผลอินพุตแบบโรตารีใน VHAL กำหนดค่าบิวด์ของคุณให้รวมบริการโรตารี และวิธีการปรับแต่งประสบการณ์โรตารีในแอปทั้งหมด สำหรับแอป OEM ที่ติดตั้งไว้ล่วงหน้า เช่น Launcher ที่ OEM มอบให้ โปรดดู ไลบรารี UI ของรถยนต์ (car-ui-library)

วีฮาล

ตัวควบคุมแบบหมุนรองรับการทำงานต่อไปนี้:

  • ขยับขึ้น ลง ซ้ายและขวา
  • หมุนตามเข็มนาฬิกาและทวนเข็มนาฬิกา
  • กดปุ่มตรงกลาง
  • กดปุ่มย้อนกลับ
  • กดปุ่มโฮม
  • กดปุ่มอื่นๆ เช่น โทรศัพท์และสื่อ

ดู 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. สถานกักกันหนึ่ง (1) แห่ง
  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 ns ระหว่างการหน่วงครั้งที่หนึ่งและครั้งที่สอง
    5. 3 ns ระหว่างช่วงหน่วงที่สองและสาม

ปุ่มตรงกลาง

เมื่อผู้ใช้กดปุ่มกลาง 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

ไม่ควรสร้างเหตุการณ์ ซ้ำ ในขณะที่กดปุ่มกลางค้างไว้

ปุ่มโฮม

จัดการปุ่ม Home เหมือนกับที่คุณทำกับปุ่ม Back แต่ใช้ KEYCODE_HOME แทน KEYCODE_BACK

ปุ่มอื่นๆ

หากตัวควบคุมแบบหมุนมีปุ่มเพิ่มเติม VHAL สามารถจัดการปุ่มเหล่านั้นได้ตามที่ OEM ชอบ เนื่องจากไม่ถือว่าเป็นส่วนหนึ่งของปุ่มหมุนจากมุมมองของ Android โดยทั่วไปการจัดการเหล่านี้จะเหมือนกับปุ่มย้อนกลับและปุ่มโฮม แต่มีรหัสคีย์ต่างกัน ตัวอย่างเช่น KEYCODE_CALL หรือ KEYCODE_MUSIC

สร้างการกำหนดค่า

ระบบนำทางแบบหมุนมีให้โดยบริการการเข้าถึงที่เรียกว่า RotaryService หากต้องการรวมบริการนี้ไว้ในอิมเมจระบบสำหรับอุปกรณ์ของคุณ ให้เพิ่มบรรทัดต่อไปนี้ใน makefile ของคุณ:

PRODUCT_PACKAGES += CarRotaryController

คุณอาจต้องการรวมแพ็คเกจต่อไปนี้ในบิลด์การดีบัก:

บริการแบบหมุนจะเปิดใช้งานโดยอัตโนมัติเมื่ออุปกรณ์บู๊ตและเมื่อมีการสลับผู้ใช้ เพื่อให้แน่ใจว่าผู้ใช้สามารถใช้ตัวควบคุมแบบหมุนได้ระหว่างการตั้งค่า

หากคุณใช้รุ่นเดียวกันสำหรับรถยนต์ที่มีและไม่มีตัวควบคุมแบบหมุน ให้เพิ่ม CarRotaryController ดังที่แสดงด้านบน เพื่อให้โค้ดที่จำเป็นรวมอยู่ในรุ่น เพื่อป้องกันไม่ให้เปิดใช้งานบริการโรตารีบนรถยนต์ที่ไม่ใช่โรตารี ให้สร้าง RRO แบบคงที่เพื่อซ้อนทับทรัพยากรสตริง rotaryService ใน packages/services/Car/service ด้วยสตริงว่าง คุณจะใช้โครงสร้างเดียวกัน แต่มีการกำหนดค่าผลิตภัณฑ์แยกกัน สำหรับอุปกรณ์แบบหมุนและไม่หมุน เฉพาะส่วนหลังเท่านั้นที่มีการซ้อนทับ

การปรับแต่ง

OEM สามารถปรับแต่งตรรกะการค้นหาโฟกัส การเน้นโฟกัส และรายการเพิ่มเติมบางรายการผ่านการซ้อนทับทรัพยากรในตำแหน่งต่อไปนี้:

  • car-ui-library อยู่ใน packages/apps/Car/libs/car-ui-lib
  • RotaryService อยู่ใน packages/apps/Car/RotaryController
  • Core ตั้งอยู่ใน frameworks/base/core

เขยิบประวัติศาสตร์

OEM สามารถกำหนดค่าว่าจะเปิดใช้งานประวัติเขยิบสองชนิดแต่ละชนิดหรือไม่ และถ้าเป็นเช่นนั้น ขนาดแคชและนโยบายการหมดอายุ ทั้งหมดนี้ทำได้โดยการแทนที่ทรัพยากร car-ui-library ต่างๆ

แคชประวัติโฟกัส

( Android 11 QPR3, Android 11 รถยนต์, Android 12 )
แคชต่อ FocusArea นี้จัดเก็บมุมมองที่โฟกัสล่าสุดภายใน FocusArea เพื่อให้สามารถโฟกัสได้เมื่อดันกลับไปที่ FocusArea แคชนี้สามารถกำหนดค่าได้โดยการซ้อนทับทรัพยากร car-ui-library ต่อไปนี้:

  • car_ui_focus_history_cache_type :
    1. แคชถูกปิดใช้งาน
    2. แคชจะหมดอายุหลังจากผ่านไประยะหนึ่ง (ดูด้านล่าง)
    3. แคชจะไม่มีวันหมดอายุ
  • car_ui_focus_history_expiration_period_ms period_ms : จำนวนมิลลิวินาทีก่อนที่แคชจะหมดอายุหากประเภทแคชถูกตั้งค่าเป็นสอง (2) (ดูด้านบน)

แคชประวัติ FocusArea

( Android 11 QPR3, Android 11 รถยนต์, Android 12 )
แคชนี้เก็บประวัติการกระตุ้นเตือนเพื่อให้การดันไปในทิศทางตรงกันข้ามสามารถคืนโฟกัสไปที่ FocusArea เดิมได้ แคชนี้สามารถกำหนดค่าได้โดยการซ้อนทับทรัพยากร car-ui-library ต่อไปนี้:

  • car_ui_focus_area_history_cache_type :
    1. แคชถูกปิดใช้งาน
    2. แคชจะหมดอายุหลังจากเวลาผ่านไประยะหนึ่ง (ดูด้านล่าง)
    3. แคชไม่มีวันหมดอายุ
  • car_ui_focus_area_history_expiration_period_ms period_ms : จำนวนมิลลิวินาทีก่อนที่แคชจะหมดอายุหากประเภทแคชถูกตั้งค่าเป็น 2 (ดูด้านบน)
  • car_ui_clear_focus_area_history_when_rotating : ว่าจะยกเลิกแคชเมื่อผู้ใช้หมุนคอนโทรลเลอร์หรือไม่

การหมุน

( Android 11 QPR3, Android 11 รถยนต์, Android 12 )
OEM สามารถแทนที่ทรัพยากรจำนวนเต็มสองตัวใน RotaryService เพื่อระบุว่ามีการเร่งความเร็ว เช่น การเร่งความเร็วเมาส์ สำหรับการหมุนหรือไม่:

  • rotation_acceleration_3x_ms : ช่วงเวลา (หน่วยเป็นมิลลิวินาที) ใช้เพื่อตัดสินใจว่า Google ควรเร่งการหมุนของตัวควบคุมเพื่อให้มีระยะการหมุนหรือไม่ หากช่วงเวลาระหว่างดีเทนต์นี้และดีเทนต์การหมุนครั้งก่อนน้อยกว่าค่านี้ จะถือเป็นดีเทนต์การหมุน 3 อัน ตั้งค่านี้เป็น 2147483647 เพื่อปิดใช้งานการเร่งความเร็ว 3 เท่า
  • rotation_acceleration_2x_ms : คล้ายกับ rotation_acceleration_3x_ms ใช้สำหรับการเร่งความเร็ว 2 เท่า ตั้งค่านี้เป็น 2147483647 เพื่อปิดใช้งานการเร่งความเร็ว 2×

การเร่งความเร็วจะทำงานได้ดีที่สุดเมื่อมีการประทับเวลาแต่ละรายการสำหรับระยะการหมุนแต่ละครั้ง ตามที่ 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 สามารถแทนที่การเน้นโฟกัสเริ่มต้นในกรอบงาน Android และทรัพยากรการเน้นโฟกัสหลายรายการใน car-ui-library

ไฮไลท์โฟกัสเริ่มต้น

กรอบงาน Android จัดให้มีการเน้นโฟกัสเริ่มต้นผ่านแอตทริบิวต์ selectableItemBackground ใน Theme.DeviceDefault แอ็ตทริบิวต์นี้อ้างอิงถึง item_background.xml ใน Core OEM สามารถซ้อนทับ item_background.xml 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

OEM สามารถแทนที่ทรัพยากร car-ui-library ต่างๆ เพื่อควบคุมวิธีที่ไฮไลต์โฟกัสดูบนมุมมองที่มีการเน้นโฟกัสที่ไม่ใช่สี่เหลี่ยม (เช่น รูปทรงกลมหรือรูปเม็ดยา) และในแอปที่ใช้ธีมที่ไม่ได้มาจาก Theme.DeviceDefault ทรัพยากรเหล่านี้ควรถูกซ้อนทับเพื่อให้การเน้นโฟกัสสอดคล้องกับ การเน้นโฟกัสเริ่มต้น ที่วาดได้

( Android 11 QPR3, Android 11 รถยนต์, 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 รถยนต์, Android 12 )
ทรัพยากรต่อไปนี้ใช้เพื่อระบุเมื่อมีการโฟกัส และ กดมุมมอง:

  • car_ui_rotary_focus_pressed_fill_color : เติมสี
  • car_ui_rotary_focus_pressed_stroke_color stroke_color : สีเค้าร่าง
  • car_ui_rotary_focus_pressed_stroke_width : ความหนาของโครงร่าง

บางครั้งปุ่มจะมีสีพื้นหลังทึบเพื่อให้ผู้ใช้สนใจ ดังตัวอย่างที่แสดง นี่อาจทำให้มองเห็นไฮไลท์โฟกัสได้ยาก

ปุ่มที่มีพื้นหลังทึบ
รูปที่ 2 ปุ่มที่มีพื้นหลังทึบ

ในสถานการณ์นี้ นักพัฒนาสามารถระบุการเน้นโฟกัสแบบกำหนดเองโดยใช้สี รอง :
  • ( Android 11 QPR3, Android 11 รถยนต์, Android 12 )
    car_ui_rotary_focus_fill_secondary_color
    car_ui_rotary_focus_stroke_secondary_color
  • ( แอนดรอยด์ 12 )
    car_ui_rotary_focus_pressed_fill_secondary_color
    car_ui_rotary_focus_pressed_stroke_secondary_color

สีใดๆ สามารถโปร่งใสได้ และมิติใดด้านหนึ่งสามารถเป็นศูนย์ได้ ตัวอย่างเช่น คุณต้องการเพียงการเติมหรือเฉพาะโครงร่างเท่านั้น

ไฮไลท์พื้นที่โฟกัส

( Android 11 QPR3, Android 11 รถยนต์, Android 12 )
FocusArea สามารถวาดไฮไลท์ได้สองประเภทเมื่อมีการโฟกัสที่ลูกหลานตัวใดตัวหนึ่ง สามารถใช้ทั้งสองอย่างร่วมกันได้หากต้องการ คุณลักษณะนี้ถูกปิดใช้งานตามค่าเริ่มต้นใน AOSP แต่สามารถเปิดใช้งานได้โดยการแทนที่ทรัพยากร car-ui-library:

  • car_ui_enable_focus_area_foreground_highlight : วาดไฮไลท์ที่ด้านบนของ FocusArea และส่วนที่สืบทอด ใน AOSP สิ่งที่วาดได้นี้เป็นโครงร่างรอบๆ FocusArea OEM สามารถแทนที่ car_ui_focus_area_foreground_highlight ที่ดึงออกได้
  • car_ui_enable_focus_area_background_highlight _highlight : วาดไฮไลท์ที่ด้านบนของ FocusArea แต่อยู่ด้านหลังส่วนที่สืบทอด ใน AOSP สิ่งที่ถอนออกได้นี้เป็นการเติมแบบทึบ OEM สามารถแทนที่ car_ui_focus_area_background_highlight ไฮไลต์ที่ดึงออกได้

ตัวแก้ไขวิธีการป้อนข้อมูล

Input Method Editors (IME) คือวิธีการป้อนข้อมูล เช่น แป้นพิมพ์บนหน้าจอ

( Android 11 QPR3, Android 11 รถยนต์, Android 12 )
OEM ต้องซ้อนทับทรัพยากรสตริง default_touch_input_method ใน RotaryService เพื่อระบุ ComponentName ของ IME แบบสัมผัส ตัวอย่างเช่น หาก OEM ใช้ IME ที่มาพร้อมกับ Android Automotive ก็ควรระบุ com.google.android.apps.automotive.inputmethod/.InputMethodService

( Android 11 QPR3, Android 11 รถยนต์, Android 12 )
หาก 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. ความตั้งใจที่จะเปิดตัวกิจกรรมที่แสดงเป็น URL

( Android 11 QPR3, Android 11 รถยนต์, 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 รถยนต์, Android 12 )
    config_showHeadsUpNotificationOnBottom : ค่าบูลีนเพื่อแสดงว่าการแจ้งเตือนล่วงหน้าควรแสดงที่ด้านล่างแทนที่จะเป็นด้านบนหรือไม่ ซึ่งจะต้องมีค่าเดียวกันกับทรัพยากร config_showHeadsUpNotificationOnBottom Boolean ใน frameworks/base/packages/CarSystemUI/res/values/config.xml
  • ( Android 11 QPR3, Android 11 รถยนต์, Android 12 )
    notification_headsup_card_margin_horizontal : ขอบซ้ายและขวาสำหรับหน้าต่างการแจ้งเตือนล่วงหน้า ค่านี้จะต้องมีค่าเดียวกันกับทรัพยากรขนาด notification_headsup_card_margin_horizontal ใน packages/apps/Car/Notification/res/values/dimens.xml
  • ( แอนดรอยด์ 12 )
    excluded_application_overlay_window_titles : อาร์เรย์ของชื่อเรื่องของหน้าต่างที่ไม่ควรถือเป็นหน้าต่างซ้อนทับ ซึ่งควรรวมชื่อของหน้าต่างแอปที่แสดงถึง TaskViews หรือ TaskDisplayAreas ตามค่าเริ่มต้น รายการนี้จะมีเฉพาะ "แผนที่"

คุณสามารถซ้อนทับทรัพยากร RotaryService ต่อไปนี้:

  • ( Android 11 QPR3, Android 11 รถยนต์, Android 12 )
    long_press_ms : ค่าจำนวนเต็มเพื่อแสดงจำนวนมิลลิวินาทีที่ต้องกดปุ่มกลางค้างไว้เพื่อทริกเกอร์การกดแบบยาว ศูนย์บ่งชี้ว่าควรใช้การหมดเวลากดแบบยาวที่เป็นค่าเริ่มต้นของระบบ นี่คือค่าเริ่มต้น