บทความนี้อธิบายวิธีประมวลผลอินพุตแบบหมุนใน VHAL กำหนดค่าบิลด์ของคุณเพื่อรวมบริการโรตารี และวิธีปรับแต่งประสบการณ์โรตารีในแอปทั้งหมด สำหรับแอป OEM ที่ติดตั้งไว้ล่วงหน้า เช่น ลอนเชอร์ที่ OEM ให้มา โปรดดู Car UI Library (car-ui-library)
VHAL
ตัวควบคุมแบบโรตารี่รองรับการทำงานต่อไปนี้:
- เลื่อนขึ้น ลง ซ้ายและขวา
- หมุนตามเข็มนาฬิกาและทวนเข็มนาฬิกา
- กดปุ่มตรงกลาง
- กดปุ่มย้อนกลับ
- กดปุ่มโฮม
- กดปุ่มอื่นๆ เช่น โทรศัพท์และสื่อ
ดู 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
ไม่ควรสร้างเหตุการณ์ที่เกิด ซ้ำ ในขณะที่กดปุ่มตรงกลางค้างไว้
ปุ่มโฮม
จัดการกับปุ่มโฮมเหมือนกับที่คุณทำกับปุ่มย้อนกลับ แต่ใช้ 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
: กี่มิลลิวินาทีก่อนที่แคชจะหมดอายุ หากตั้งค่าประเภทแคชเป็นสอง (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
: กี่มิลลิวินาทีก่อนที่แคชจะหมดอายุ หากตั้งค่าประเภทแคชเป็น 2 (ดูด้านบน) -
car_ui_clear_focus_area_history_when_rotating
: กำหนดให้แคชเป็นโมฆะเมื่อผู้ใช้หมุนตัวควบคุมหรือไม่
การหมุน
( Android 11 QPR3, Android 11 รถยนต์, Android 12 )
OEM สามารถแทนที่ทรัพยากรจำนวนเต็มสองแห่งใน RotaryService
เพื่อระบุว่ามีการเร่งความเร็ว เช่น การเร่งด้วยเมาส์ สำหรับการหมุนหรือไม่:
-
rotation_acceleration_3x_ms
: ช่วงเวลา (เป็นมิลลิวินาที) ที่ใช้ในการตัดสินใจว่า Google ควรเร่งการหมุนของตัวควบคุมเพื่อกักการหมุนหรือไม่ หากช่วงเวลาระหว่างช่วงกักนี้กับช่วงกักการหมุนครั้งก่อนน้อยกว่าค่านี้ จะถือว่าเป็นช่วงกักการหมุนสามช่วง ตั้งค่านี้เป็น 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
เพื่อเปลี่ยนการเน้นโฟกัสเริ่มต้นที่วาดได้
โดยทั่วไป 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
เน้นเน้นทรัพยากรใน 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
: สีเค้าร่าง -
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 ไฟล์ Drawable นี้เป็นโครงร่างรอบๆFocusArea
OEM สามารถแทนที่car_ui_focus_area_foreground_highlight
drawable ได้ -
car_ui_enable_focus_area_background_highlight
: วาดไฮไลท์ที่ด้านบนของFocusArea
แต่อยู่ด้านหลังทายาท ใน AOSP Drawable นี้เป็นการเติมแบบทึบ OEM สามารถแทนที่car_ui_focus_area_background_highlight
drawable ได้
ตัวแก้ไขวิธีการป้อนข้อมูล
ตัวแก้ไขวิธีการป้อนข้อมูล (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
ใน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
: ค่าจำนวนเต็มเพื่อแสดงจำนวนมิลลิวินาทีที่ปุ่ม Center ต้องกดค้างไว้เพื่อทริกเกอร์การกดแบบยาว ศูนย์บ่งชี้ว่าควรใช้การหมดเวลากดแบบยาวโดยค่าเริ่มต้นของระบบ นี่คือค่าเริ่มต้น