หน้านี้อธิบายวิธีประมวลผลอินพุตแบบโรตารีใน VHAL กำหนดค่าบิวด์ของคุณให้รวมบริการโรตารี และวิธีการปรับแต่งประสบการณ์โรตารีในแอปทั้งหมด สำหรับแอป OEM ที่ติดตั้งไว้ล่วงหน้า เช่น Launcher ที่ OEM มอบให้ โปรดดู ไลบรารี UI ของรถยนต์ (car-ui-library)
วีฮาล
ตัวควบคุมแบบหมุนรองรับการทำงานต่อไปนี้:
- ขยับขึ้น ลง ซ้ายและขวา
- หมุนตามเข็มนาฬิกาและทวนเข็มนาฬิกา
- กดปุ่มตรงกลาง
- กดปุ่มย้อนกลับ
- กดปุ่มโฮม
- กดปุ่มอื่นๆ เช่น โทรศัพท์และสื่อ
ดู hardware/interfaces/automotive/vehicle/2.0/types.hal
สำหรับเอกสารประกอบเกี่ยวกับคุณสมบัติของระบบและ int32Values
ที่เกี่ยวข้อง
VHAL ควรจัดการการกระทำเหล่านี้:
ดุน
เมื่อผู้ใช้กดตัวควบคุมแบบหมุนไปทางขวา VHAL ควรใช้คุณสมบัติ HW_KEY_INPUT
พร้อมด้วย int32Values
ต่อไปนี้เพื่อส่งเหตุการณ์ไปยัง Android:
-
ACTION_DOWN
-
KEYCODE_SYSTEM_NAVIGATION_RIGHT
- การแสดงเป้าหมาย
เมื่อผู้ใช้ปล่อยตัวควบคุมแบบหมุน 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
ผู้ใช้อาจดันตัวควบคุมแบบหมุนไปในทิศทางตั้งฉากก่อนที่จะปล่อยออก ตัวอย่างเช่น สถานการณ์สมมติต่อไปนี้:
สิ่งนี้ควรสร้างลำดับของเหตุการณ์ต่อไปนี้:
-
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
ไม่ควรสร้างเหตุการณ์ ซ้ำ ในขณะที่ตัวควบคุมแบบหมุนถูกยึดไว้ในทิศทางเดียว
หมุน
เมื่อผู้ใช้หมุนตัวควบคุมแบบหมุนตามเข็มนาฬิกาด้วยตัวหน่วงเดียว (คลิก) VHAL ควรใช้คุณสมบัติ HW_ROTARY_INPUT
พร้อมด้วย int32Values
ต่อไปนี้เพื่อส่งเหตุการณ์ไปยัง Android:
-
ROTARY_INPUT_TYPE_SYSTEM_NAVIGATION
- สถานกักกันหนึ่ง (1) แห่ง
- การแสดงเป้าหมาย
การประทับเวลาของเหตุการณ์ควรตั้งค่าเป็นเวลาที่ผ่านไปในหน่วยนาโนวินาที
การหมุนทวนเข็มนาฬิกาหนึ่ง (1) ตัวควรสร้างเหตุการณ์เดียวกัน แต่ด้วย -1 สำหรับจำนวนตัวหน่วง
หากการหยุดการหมุนหลายครั้งในทิศทางเดียวกันเกิดขึ้นอย่างต่อเนื่องอย่างรวดเร็ว VHAL ควรรวมการหน่วงเวลาให้เป็นเหตุการณ์เดียว เพื่อไม่ให้ระบบมีเหตุการณ์มากเกินไป ในกรณีนี้ การประทับเวลาของเหตุการณ์ควรเป็นเวลาที่เกิดการหมุนครั้งแรก int32Values
ควรรวมจำนวนนาโนวินาทีระหว่างการหยุดการหมุนติดต่อกัน
ตัวอย่างเช่น ลำดับการหมุนต่อไปนี้:
- ณ เวลา t0 ผู้ใช้หมุนตัวย้อนหนึ่งตัวทวนเข็มนาฬิกา
- ที่เวลา t0 + 5 ns ผู้ใช้หมุนตัวย้อนทวนเข็มนาฬิกาหนึ่งตัว
- ที่เวลา t0 + 8 ns ผู้ใช้หมุนตัวย้อนทวนเข็มนาฬิกาหนึ่งตัว
ควรสร้างเหตุการณ์นี้:
- คุณสมบัติ:
HW_ROTARY_INPUT
- การประทับเวลา:
t0
-
int32Values
:-
ROTARY_INPUT_TYPE_SYSTEM_NAVIGATION
- -3 (สามตัวทวนเข็มนาฬิกา)
- การแสดงเป้าหมาย
- 5 ns ระหว่างการหน่วงครั้งที่หนึ่งและครั้งที่สอง
- 3 ns ระหว่างช่วงหน่วงที่สองและสาม
-
ปุ่มตรงกลาง
เมื่อผู้ใช้กดปุ่มกลาง VHAL ควรใช้คุณสมบัติ HW_KEY_INPUT
พร้อมด้วย int32Values
ต่อไปนี้เพื่อส่งเหตุการณ์ไปยัง Android:
-
ACTION_DOWN
-
KEYCODE_DPAD_CENTER
- การแสดงเป้าหมาย
เมื่อผู้ใช้ปล่อยตัวควบคุมแบบหมุน VHAL ควรใช้คุณสมบัติและรหัสคีย์เดียวกันกับ ACTION_UP
อย่าสร้างเหตุการณ์ ซ้ำ เมื่อกดปุ่มกลางค้างไว้
ปุ่มย้อนกลับ
เมื่อผู้ใช้กดปุ่มย้อนกลับ VHAL ควรใช้คุณสมบัติ HW_KEY_INPUT
พร้อมด้วย int32Values
ต่อไปนี้เพื่อส่งเหตุการณ์ไปยัง Android:
-
ACTION_DOWN
-
KEYCODE_BACK
- การแสดงเป้าหมาย
เมื่อผู้ใช้ปล่อยตัวควบคุมแบบหมุน VHAL ควรใช้คุณสมบัติและรหัสคีย์เดียวกันกับ ACTION_UP
ไม่ควรสร้างเหตุการณ์ ซ้ำ ในขณะที่กดปุ่มกลางค้างไว้
ปุ่มโฮม
จัดการปุ่ม Home เหมือนกับที่คุณทำกับปุ่ม Back แต่ใช้ KEYCODE_HOME
แทน KEYCODE_BACK
ปุ่มอื่นๆ
หากตัวควบคุมแบบหมุนมีปุ่มเพิ่มเติม VHAL สามารถจัดการปุ่มเหล่านั้นได้ตามที่ OEM ชอบ เนื่องจากไม่ถือว่าเป็นส่วนหนึ่งของปุ่มหมุนจากมุมมองของ Android โดยทั่วไปการจัดการเหล่านี้จะเหมือนกับปุ่มย้อนกลับและปุ่มโฮม แต่มีรหัสคีย์ต่างกัน ตัวอย่างเช่น KEYCODE_CALL
หรือ KEYCODE_MUSIC
สร้างการกำหนดค่า
ระบบนำทางแบบหมุนมีให้โดยบริการการเข้าถึงที่เรียกว่า RotaryService
หากต้องการรวมบริการนี้ไว้ในอิมเมจระบบสำหรับอุปกรณ์ของคุณ ให้เพิ่มบรรทัดต่อไปนี้ใน makefile ของคุณ:
PRODUCT_PACKAGES += CarRotaryController
คุณอาจต้องการรวมแพ็คเกจต่อไปนี้ในบิลด์การดีบัก:
-
RotaryPlayground
แอปอ้างอิงสำหรับโรตารี (ดู RotaryPlayground ) -
RotaryIME
การสาธิต IME แบบหมุน (ดู ตัวแก้ไขวิธีการป้อนข้อมูล ) -
CarRotaryImeRRO
ภาพซ้อนทับสำหรับRotaryIME
บริการแบบหมุนจะเปิดใช้งานโดยอัตโนมัติเมื่ออุปกรณ์บู๊ตและเมื่อมีการสลับผู้ใช้ เพื่อให้แน่ใจว่าผู้ใช้สามารถใช้ตัวควบคุมแบบหมุนได้ระหว่างการตั้งค่า
หากคุณใช้รุ่นเดียวกันสำหรับรถยนต์ที่มีและไม่มีตัวควบคุมแบบหมุน ให้เพิ่ม 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
:- แคชถูกปิดใช้งาน
- แคชจะหมดอายุหลังจากผ่านไประยะหนึ่ง (ดูด้านล่าง)
- แคชจะไม่มีวันหมดอายุ
-
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
:- แคชถูกปิดใช้งาน
- แคชจะหมดอายุหลังจากเวลาผ่านไประยะหนึ่ง (ดูด้านล่าง)
- แคชไม่มีวันหมดอายุ
-
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
: ความหนาของโครงร่าง
บางครั้งปุ่มจะมีสีพื้นหลังทึบเพื่อให้ผู้ใช้สนใจ ดังตัวอย่างที่แสดง นี่อาจทำให้มองเห็นไฮไลท์โฟกัสได้ยาก
ในสถานการณ์นี้ นักพัฒนาสามารถระบุการเน้นโฟกัสแบบกำหนดเองโดยใช้สี รอง :- ( 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 สามารถกำหนดค่าสิ่งที่ควรเกิดขึ้นสำหรับแต่ละทิศทางทั้งสี่โดยระบุการรวมกันของ:
- การดำเนินการระดับโลกที่กำหนดโดย
AccessibilityService
ตัวอย่างเช่นGLOBAL_ACTION_BACK
- รหัสคีย์ เช่น
KEYCODE_BACK
- ความตั้งใจที่จะเปิดตัวกิจกรรมที่แสดงเป็น 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
: ค่าจำนวนเต็มเพื่อแสดงจำนวนมิลลิวินาทีที่ต้องกดปุ่มกลางค้างไว้เพื่อทริกเกอร์การกดแบบยาว ศูนย์บ่งชี้ว่าควรใช้การหมดเวลากดแบบยาวที่เป็นค่าเริ่มต้นของระบบ นี่คือค่าเริ่มต้น