ไลบรารี Jetpack WindowManager ช่วยให้นักพัฒนาแอปพลิเคชันรองรับรูปแบบของอุปกรณ์ใหม่ๆ และ สภาพแวดล้อมแบบหลายหน้าต่างได้
ส่วนขยาย WindowManager (ส่วนขยาย) เป็นโมดูลแพลตฟอร์ม Android ที่ต้องเลือกใช้ ซึ่ง
เปิดใช้ฟีเจอร์ Jetpack WindowManager ที่หลากหลาย โมดูลนี้ได้รับการติดตั้งใช้งาน
ใน AOSP ใน
frameworks/base/libs/WindowManager/Jetpack
และจัดส่งในอุปกรณ์ที่รองรับฟีเจอร์ WindowManager
การเผยแพร่โมดูลส่วนขยาย
ระบบจะคอมไพล์ส่วนขยายเป็น.jar
ไลบรารีและวางไว้ในพาร์ติชัน system_ext
ในอุปกรณ์หากเปิดใช้ส่วนขยายใน Makefile ของอุปกรณ์
หากต้องการเปิดใช้ส่วนขยายในอุปกรณ์ ให้เพิ่มข้อมูลต่อไปนี้ลงในไฟล์ makefile ของอุปกรณ์ผลิตภัณฑ์
$(call inherit-product, $(SRC_TARGET_DIR)/product/window_extensions.mk)
ซึ่งจะเปิดใช้แพ็กเกจ androidx.window.extensions
และ androidx.window.sidecar
ในอุปกรณ์และตั้งค่าพร็อพเพอร์ตี้ persist.wm.extensions.enabled
การรวมแพ็กเกจเหล่านี้ไว้ในไฟล์ Makefile จะเป็นการวางประกาศใน
etc/permissions/
ด้วย ทำให้กระบวนการของแอปพลิเคชันเข้าถึงได้ โดยปกติแล้ว ระบบจะโหลดและเรียกใช้โมดูลเป็นส่วนหนึ่งของกระบวนการแอปพลิเคชันที่รันไทม์เมื่อใช้ไลบรารี Jetpack WindowManager ซึ่งทำให้การทำงานคล้ายกับโค้ดเฟรมเวิร์กฝั่งไคลเอ็นต์ ดังที่แสดงในรูปต่อไปนี้

androidx.window.extensions
คือโมดูลส่วนขยายปัจจุบันที่อยู่ระหว่างการพัฒนา โมดูล androidx.window.sidecar
เป็นโมดูลเดิม
ที่รวมไว้เพื่อความเข้ากันได้กับ Jetpack WindowManager เวอร์ชันแรกสุด
แต่เราไม่ได้ดูแลรักษา Sidecar อีกต่อไป
รูปภาพต่อไปนี้แสดงตรรกะในการพิจารณาการใช้
androidx.window.extensions
หรือ androidx.window.sidecar

androidx.window.extensions
หรือ androidx.window.sidecar
โมดูลส่วนขยาย
ส่วนขยายมีฟีเจอร์การแสดงหน้าต่างสำหรับอุปกรณ์หน้าจอขนาดใหญ่แบบพับได้และ อุปกรณ์ที่รองรับการแสดงหน้าต่างบนจอแสดงผลภายนอก โดยฟีเจอร์ต่างๆ จะมีดังนี้
การติดตั้งใช้งานส่วนขยายของ OEM สามารถระบุคอมโพเนนต์ Null หรือคอมโพเนนต์ที่มี
การติดตั้งใช้งานเริ่มต้นหรือการติดตั้งใช้งาน Stub ของเมธอดในอินเทอร์เฟซ
WindowExtensions
ได้ หากฮาร์ดแวร์ของอุปกรณ์ไม่รองรับฟีเจอร์ที่เกี่ยวข้อง
เว้นแต่จะมีการขอฟีเจอร์นั้นอย่างเจาะจงในเอกสารคำจำกัดความความเข้ากันได้ (CDD)
7.1.1.1
ส่วนขยายและ API ของ Jetpack
โมดูลส่วนขยาย WindowManager มีพื้นผิว API ของตัวเองนอกเหนือจาก
API แพลตฟอร์มสาธารณะ โมดูลส่วนขยายได้รับการพัฒนาแบบสาธารณะในไลบรารี Jetpack ที่androidx.window.extensions
ไม่ได้มุ่งเน้นที่นักพัฒนาแอป
เพื่อให้ Jetpack WindowManager
(androidx.window
)
สามารถลิงก์กับโมดูลดังกล่าวในเวลาคอมไพล์ โดยปกติแล้ว Extensions API Surface จะมี
API ระดับล่าง
API ที่ส่วนขยายมีไว้ให้ใช้โดยไลบรารี Jetpack WindowManager เท่านั้น Extensions API ไม่ได้มีไว้ให้นักพัฒนาแอปพลิเคชันเรียกใช้โดยตรง ห้ามเพิ่มไลบรารีส่วนขยายเป็น ทรัพยากร Dependency สำหรับแอปพลิเคชันในไฟล์บิลด์ Gradle เพื่อให้มั่นใจว่าฟังก์ชันการทำงาน ถูกต้อง หลีกเลี่ยงการคอมไพล์ล่วงหน้าของไลบรารีส่วนขยายลงในแอปพลิเคชันโดยตรง แต่ให้ใช้การโหลดรันไทม์แทนเพื่อป้องกันกรณีที่โหลดคลาสส่วนขยายที่คอมไพล์ล่วงหน้าและรันไทม์ผสมกัน
Jetpack WindowManager (androidx.window
) มีไว้เพื่อเพิ่มเป็นทรัพยากร Dependency ของแอปพลิเคชัน
และมี API สาธารณะที่นักพัฒนาแอปใช้ รวมถึง API สำหรับ
ฟีเจอร์ส่วนขยาย WindowManager ไลบรารี WindowManager จะโหลดส่วนขยายลงในกระบวนการของแอปพลิเคชันโดยอัตโนมัติ
และจะรวม API ส่วนขยายระดับล่าง
ไว้ในการแยกส่วนระดับสูงและอินเทอร์เฟซที่มุ่งเน้นมากขึ้น
API ของ WindowManager Jetpack เป็นไปตามมาตรฐานของการพัฒนาแอปพลิเคชัน Android สมัยใหม่
และมีจุดประสงค์เพื่อมอบความสะดวกในการทำงานร่วมกัน
โดยการผสานรวมกับโค้ดเบสที่ใช้ไลบรารี AndroidX อื่นๆ ได้เป็นอย่างดี
เวอร์ชันและการอัปเดตส่วนขยาย
คุณสามารถอัปเดตโมดูลส่วนขยายพร้อมกับการอัปเดตแพลตฟอร์ม Android รายปีหรือรายไตรมาสได้ การอัปเดตรายไตรมาสช่วยให้เพิ่มระดับ API ของส่วนขยายได้ระหว่างการอัปเดต API ของแพลตฟอร์ม Android ซึ่งช่วยให้ทำซ้ำได้เร็วขึ้นและเปิดโอกาสให้ OEM เพิ่มการเข้าถึง API อย่างเป็นทางการไปยังฟีเจอร์ใหม่ๆ ใกล้กับการเปิดตัวฮาร์ดแวร์
ตารางต่อไปนี้แสดงandroidx.window.extensions
เวอร์ชัน API สำหรับ
Android เวอร์ชันต่างๆ
เวอร์ชันแพลตฟอร์ม Android | ระดับ API ของส่วนขยาย WindowManager | เวอร์ชัน API ของ androidx.window.extensions |
---|---|---|
Android 15 | 6 | 1.5.0 (เร็วๆ นี้) |
Android 14 QPR3 | 5 | 1.4.0 (เร็วๆ นี้) |
Android 14 QPR1 | 4 | 1.3.0 |
Android 14 | 3 | 1.2.0 |
Android 13 QPR3 | 2 | 1.1.0 |
Android 13 | 1 | 1.0.0 |
Android 12L | 1 | 1.0.0 |
ระดับ API ของส่วนขยาย (คอลัมน์ตรงกลาง) จะเพิ่มขึ้นทุกครั้งที่มีการ เพิ่ม API ที่เสถียรที่มีอยู่ (คอลัมน์ด้านขวา)
ความเข้ากันได้แบบย้อนหลังและแบบไปข้างหน้า
Jetpack WindowManager จัดการความซับซ้อนของการรับมือกับการอัปเดตระดับ API บ่อยครั้ง การพัฒนา API อย่างรวดเร็ว และความเข้ากันได้แบบย้อนหลัง เมื่อมีการเรียกใช้โค้ดไลบรารี ในกระบวนการแอปพลิเคชัน ไลบรารีจะตรวจสอบระดับ API ของส่วนขยายที่ประกาศไว้ และให้สิทธิ์เข้าถึงฟีเจอร์ตามระดับที่ประกาศไว้
นอกจากนี้ WindowManager ยังทำการตรวจสอบการสะท้อน Java ขณะรันไทม์ของ Extensions API ที่พร้อมใช้งานตามระดับ Extensions API ที่ประกาศไว้ เพื่อป้องกันไม่ให้แอปพลิเคชันขัดข้องขณะรันไทม์ หากไม่ตรงกัน WindowManager จะ ปิดใช้ส่วนขยาย (บางส่วนหรือทั้งหมด) และรายงานฟีเจอร์ที่เกี่ยวข้อง ว่าแอปพลิเคชันใช้ไม่ได้
ส่วนขยาย WindowManager ได้รับการติดตั้งใช้งานเป็นsystem_ext
โมดูลที่ใช้
API แพลตฟอร์มส่วนตัวเพื่อเรียกใช้ในคอร์ WindowManager
DeviceStateManager
และบริการระบบอื่นๆ ในการติดตั้งใช้งานฟีเจอร์ส่วนขยาย
เราอาจไม่คงความเข้ากันได้กับส่วนขยายเวอร์ชันก่อนเผยแพร่
ก่อนการเผยแพร่แพลตฟอร์ม Android ที่เกี่ยวข้องรายไตรมาสหรือรายปี
ซึ่งเป็นเวอร์ชันสุดท้าย ดูประวัติทั้งหมดของ Extensions API ได้ในสาขาการเผยแพร่window:extensions:extensions
ไฟล์ข้อความ API
ส่วนขยายเวอร์ชันใหม่กว่าจะต้องทำงานร่วมกับ WindowManager เวอร์ชันเก่าที่คอมไพล์ลงในแอปพลิเคชันต่อไปเพื่อรักษาความเข้ากันได้แบบย้อนกลับ เพื่อ ให้มั่นใจในเรื่องนี้ API ส่วนขยายเวอร์ชันใหม่จะเพิ่มเฉพาะ API ใหม่และ จะไม่นำ API เก่าออก ด้วยเหตุนี้ แอปพลิเคชันที่มี WindowManager เวอร์ชันเก่าจึงใช้ API ของส่วนขยายเวอร์ชันเก่าที่แอปคอมไพล์กับ API นั้นต่อไปได้
การยืนยัน CTS ช่วยให้มั่นใจได้ว่าสำหรับ API ของส่วนขยายเวอร์ชันใดก็ตามที่ประกาศไว้ในอุปกรณ์ API ทั้งหมดสำหรับเวอร์ชันนั้นและเวอร์ชันก่อนหน้าจะพร้อมใช้งานและทำงานได้
ประสิทธิภาพ
โมดูลส่วนขยายจะแคชไว้ในตัวโหลดคลาสของระบบที่ไม่ใช่ bootclasspath โดยค่าเริ่มต้นตั้งแต่ Android 14 (API ระดับ 34) ดังนั้น จึงไม่มีผลต่อประสิทธิภาพเนื่องจากการโหลดโมดูลลงในหน่วยความจำเมื่อแอป เริ่มต้น การใช้ฟีเจอร์ของแต่ละโมดูลอาจส่งผลเล็กน้อยต่อ ลักษณะประสิทธิภาพของแอปเมื่อมีการเรียก IPC เพิ่มเติม ระหว่างไคลเอ็นต์กับเซิร์ฟเวอร์
โมดูล
การฝังกิจกรรม
คอมโพเนนต์การฝัง กิจกรรม ช่วยให้แอปพลิเคชันเพิ่มประสิทธิภาพ UI สำหรับอุปกรณ์หน้าจอขนาดใหญ่และ จอแสดงผลภายนอกได้ การฝังกิจกรรมช่วยให้สามารถนำเสนอกิจกรรม 2 อย่าง ควบคู่กันในเลย์เอาต์แบบหลายบานหน้าต่าง ซึ่งช่วยอำนวยความสะดวกในการพัฒนาแอปแบบปรับได้สำหรับ แอปพลิเคชันเดิม
คอมโพเนนต์การฝังกิจกรรมต้องพร้อมใช้งานในอุปกรณ์ทั้งหมดที่มีจอแสดงผลในตัวขนาดเท่ากับหรือใหญ่กว่า sw600dp
นอกจากนี้ คุณต้องเปิดใช้การฝังกิจกรรมในอุปกรณ์ที่รองรับการเชื่อมต่อจอแสดงผลภายนอกด้วย เนื่องจากแอปพลิเคชันอาจแสดงในขนาดที่ใหญ่ขึ้นเมื่อเชื่อมต่อจอแสดงผลภายนอกในขณะรันไทม์
การกำหนดค่าอุปกรณ์
ไม่จำเป็นต้องมีการกำหนดค่าอุปกรณ์ใดๆ นอกเหนือจากการเปิดใช้โมดูลส่วนขยาย ตามที่อธิบายไว้ในส่วนการเผยแพร่โมดูลส่วนขยาย คุณควรเปิดใช้ ส่วนขยายในอุปกรณ์ทั้งหมดที่รองรับโหมดหลายหน้าต่าง ในอนาคต Android เวอร์ชันต่างๆ อาจกำหนดให้ต้องใช้ส่วนขยายในการกำหนดค่าอุปกรณ์พกพาและอุปกรณ์หน้าจอขนาดใหญ่ ทั่วไป
ข้อมูลเลย์เอาต์หน้าต่าง
คอมโพเนนต์ข้อมูลเลย์เอาต์หน้าต่างจะระบุตำแหน่งและสถานะของ บานพับในอุปกรณ์พับได้เมื่อบานพับตัดผ่านหน้าต่างแอปพลิเคชัน ข้อมูลเลย์เอาต์หน้าต่างช่วยให้แอปพลิเคชันตอบสนองและแสดงเลย์เอาต์ที่เพิ่มประสิทธิภาพในโหมดตั้งโต๊ะบนอุปกรณ์พับได้ ดูรายละเอียดการใช้งานได้ที่หัวข้อทำให้แอปของคุณรองรับการพับ
อุปกรณ์ Android แบบพับได้ที่มีบานพับซึ่งเชื่อมต่อพื้นที่แผงจอแสดงผลที่แยกกันหรือต่อเนื่องต้องทำให้แอปพลิเคชันเข้าถึงข้อมูลเกี่ยวกับบานพับได้ผ่าน WindowLayoutComponent
ต้องรายงานตำแหน่งและขอบบานพับเทียบกับหน้าต่างแอปพลิเคชัน
ที่ระบุโดย Context
ที่ส่งไปยัง API หากขอบเขตหน้าต่างแอปพลิเคชันไม่ตัดกับขอบเขตบานพับ ระบบจะไม่รายงานบานพับ
DisplayFeature
นอกจากนี้ คุณยังไม่ต้องรายงานฟีเจอร์การแสดงผล
เมื่อระบบอาจรายงานตำแหน่งของฟีเจอร์ดังกล่าวได้อย่างไม่น่าเชื่อถือ เช่น เมื่อผู้ใช้ย้ายหน้าต่างแอปพลิเคชันได้อย่างอิสระในโหมดหลายหน้าต่างหรือ
โหมดแถบดำด้านบนและด้านล่างเพื่อความเข้ากันได้
สำหรับฟีเจอร์การพับ
ต้องรายงานการอัปเดตสถานะเมื่อตำแหน่งบานพับเปลี่ยนระหว่าง
สถานะที่เสถียร โดยค่าเริ่มต้นในสถานะการแสดงผลแบบแบน API ต้องรายงาน
FoldingFeature.State.FLAT
หากฮาร์ดแวร์ของอุปกรณ์สามารถอยู่ในโหมดพับครึ่งในสถานะที่เสถียรได้ API ต้องรายงาน FoldingFeature.State.HALF_OPENED
ไม่มีสถานะปิดใน API เนื่องจากในกรณีดังกล่าว หน้าต่างแอปพลิเคชัน
จะไม่ปรากฏหรือจะไม่ข้ามขอบเขตบานพับ
การกำหนดค่าอุปกรณ์
หากต้องการรองรับการใช้งานฟีเจอร์การพับ OEM ต้องทำดังนี้
กำหนดค่าสถานะอุปกรณ์ใน
device_state_configuration.xml
เพื่อให้DeviceStateManagerService
ใช้ได้ ดูข้อมูลอ้างอิงได้ที่DeviceStateProviderImpl.java
หากการติดตั้งใช้งานเริ่มต้นของ
DeviceStateProvider
หรือDeviceStatePolicy
ไม่เหมาะกับอุปกรณ์ คุณสามารถใช้การติดตั้งใช้งานที่กำหนดเองได้เปิดใช้โมดูลส่วนขยายตามที่อธิบายไว้ในส่วนการเผยแพร่โมดูลส่วนขยาย
ระบุตำแหน่งของฟีเจอร์การแสดงผลใน
com.android.internal.R.string.config_display_features
สตริงทรัพยากร (โดยปกติจะอยู่ในframeworks/base/core/res/res/values/config.xml
ในอุปกรณ์ โอเวอร์เลย์)รูปแบบที่คาดไว้สำหรับสตริงคือ
<type>-[<left>,<top>,<right>,<bottom>]
type
อาจเป็นfold
หรือhinge
ก็ได้ ค่าสำหรับleft
,top
,right
และbottom
คือพิกัดพิกเซลจำนวนเต็มในพื้นที่พิกัดการแสดงผล ในแนวนอนของการแสดงผล สตริงการกำหนดค่าอาจ มีฟีเจอร์การแสดงผลหลายรายการโดยคั่นด้วยเครื่องหมายอัฒภาคเช่น
<!-- Jetpack WindowManager display features --> <string name="config_display_features" translatable="false">fold-[1000,0,1000,2000]</string>
กำหนดการจับคู่ระหว่างตัวระบุสถานะอุปกรณ์ภายในที่ใช้ใน
DeviceStateManager
กับค่าคงที่สถานะสาธารณะที่ส่งไปยังนักพัฒนาแอปในcom.android.internal.R.array.config_device_state_postures
รูปแบบที่คาดไว้สำหรับแต่ละรายการมีดังนี้
<device_specific_state_identifier>:<Jetpack WindowManager state identifier>
ตัวระบุรัฐที่รองรับมีดังนี้
COMMON_STATE_NO_FOLDING_FEATURES = 1
: รัฐไม่มีฟีเจอร์การพับ ที่จะรายงาน เช่น อาจเป็นสถานะปิดของ อุปกรณ์พับเข้าทั่วไปที่มีหน้าจอหลักอยู่ด้านในCOMMON_STATE_HALF_OPENED = 2
: ฟีเจอร์การพับเปิดอยู่ครึ่งหนึ่งCOMMON_STATE_FLAT = 3
: ฟีเจอร์การพับแบน เช่น อาจเป็นสถานะเปิดของอุปกรณ์พับเข้าทั่วไปที่มีหน้าจอหลักอยู่ด้านในCOMMON_STATE_USE_BASE_STATE = 1000
: ใน Android 14 ค่าที่ใช้สำหรับสถานะจำลองได้ ซึ่งสถานะบานพับได้มาจากสถานะพื้นฐานตามที่กำหนดไว้ ในCommonFoldingFeature.java
ดูข้อมูลเพิ่มเติมได้ที่
DeviceStateManager.DeviceStateCallback#onBaseStateChanged(int)
เช่น
<!-- Map of System DeviceState supplied by DeviceStateManager to WindowManager posture.--> <string-array name="config_device_state_postures" translatable="false"> <item>0:1</item> <!-- CLOSED : COMMON_STATE_NO_FOLDING_FEATURES --> <item>1:2</item> <!-- HALF_OPENED : COMMON_STATE_HALF_OPENED --> <item>2:3</item> <!-- OPENED : COMMON_STATE_FLAT --> <item>3:1</item> <!-- REAR_DISPLAY : COMMON_STATE_NO_FOLDING_FEATURES --> <item>4:1000</item> <!-- CONCURRENT : COMMON_STATE_USE_BASE_STATE --> </string-array>
พื้นที่หน้าต่าง
คอมโพเนนต์พื้นที่หน้าต่างมีชุดฟีเจอร์ที่ให้สิทธิ์เข้าถึงแอปพลิเคชัน เพื่อแสดงผลเพิ่มเติมและพื้นที่แสดงผลในอุปกรณ์พับได้และ อุปกรณ์แบบหลายจอแสดงผลบางรุ่น
โหมดจอแสดงผลด้านหลังช่วยให้แอปพลิเคชันแสดง UI ตัวอย่างกล้องบน จอแสดงผลด้านนอกของอุปกรณ์แบบพับได้เพื่อให้ใช้กล้องหลักของอุปกรณ์สำหรับ เซลฟีและวิดีโอได้ อุปกรณ์ที่มีฝาครอบจอแสดงผลที่เข้ากันได้กับ Android (ตามที่กำหนดโดย CDD ของ Android ในแง่ของแอตทริบิวต์ต่างๆ เช่น ขนาด ความหนาแน่น และ ความสามารถในการนำทางที่มี) ซึ่งสอดคล้องกับกล้องของอุปกรณ์ด้านหลัง ต้องให้สิทธิ์เข้าถึงโหมดจอแสดงผลด้านหลัง
ใน Android 14 โหมดจอแสดงผลคู่จะช่วยให้แอปพลิเคชันที่ทำงานบนจอแสดงผลด้านในของอุปกรณ์แบบพับได้แสดงเนื้อหาเพิ่มเติมบนจอแสดงผลด้านนอกที่หันไปทางผู้ใช้รายอื่นได้ เช่น จอแสดงผลด้านนอกสามารถแสดงตัวอย่างกล้องต่อผู้ที่ถูกถ่ายภาพหรือบันทึกวิดีโอ
การกำหนดค่าอุปกรณ์
หากต้องการรองรับการใช้งานฟีเจอร์การพับ OEM ต้องทำดังนี้
กำหนดค่าสถานะอุปกรณ์ใน
device_state_configuration.xml
เพื่อให้DeviceStateManagerService
ใช้ได้ ดูข้อมูลเพิ่มเติมได้ที่DeviceStateProviderImpl.java
หากการติดตั้งใช้งานเริ่มต้นของ
DeviceStateProvider
หรือDeviceStatePolicy
ไม่เหมาะกับอุปกรณ์ คุณสามารถใช้การติดตั้งใช้งานที่กำหนดเองได้สําหรับอุปกรณ์พับได้ที่รองรับโหมดเปิดหรือโหมดแบน ให้ระบุ ตัวระบุสถานะที่เกี่ยวข้องใน
com.android.internal.R.array.config_openDeviceStates
สำหรับอุปกรณ์ที่พับได้ซึ่งรองรับสถานะพับ ให้ระบุตัวระบุสถานะที่เกี่ยวข้องใน
com.android.internal.R.array.config_foldedDeviceStates
สำหรับอุปกรณ์ที่พับเข้าที่รองรับสถานะพับครึ่ง (บานพับเปิดครึ่งหนึ่งเหมือนแล็ปท็อป) ให้ระบุสถานะที่เกี่ยวข้องใน
com.android.internal.R.array.config_halfFoldedDeviceStates
สำหรับอุปกรณ์ที่รองรับโหมดจอแสดงผลด้านหลัง ให้ทำดังนี้
- ระบุสถานะที่เกี่ยวข้องใน
com.android.internal.R.array.config_rearDisplayDeviceStates
สำหรับDeviceStateManager
- ระบุที่อยู่การแสดงผลจริงของจอแสดงผลด้านหลังใน
com.android.internal.R.string.config_rearDisplayPhysicalAddress
- ระบุตัวระบุสถานะใน
com.android.internal.R.integer.config_deviceStateRearDisplay
ที่จะ ใช้โดยส่วนขยาย - เพิ่มตัวระบุสถานะใน
com.android.internal.R.array.config_deviceStatesAvailableForAppRequests
เพื่อให้แอปพลิเคชันใช้งานได้
- ระบุสถานะที่เกี่ยวข้องใน
ใน Android 14 สำหรับอุปกรณ์ที่รองรับโหมดการแสดงผลแบบคู่ (พร้อมกัน) ให้ทำดังนี้
- ตั้งค่า
com.android.internal.R.bool.config_supportsConcurrentInternalDisplays
เป็นtrue
- ระบุที่อยู่การแสดงผลจริงของจอแสดงผลด้านหลังใน
com.android.internal.R.config_deviceStateConcurrentRearDisplay
- ระบุตัวระบุสถานะใน
com.android.internal.R.integer.config_deviceStateConcurrentRearDisplay
เพื่อให้ส่วนขยายใช้หากต้องการให้ตัวระบุพร้อมใช้งานสำหรับ แอปพลิเคชัน - เพิ่มตัวระบุสถานะใน
com.android.internal.R.array.config_deviceStatesAvailableForAppRequests
เพื่อให้แอปพลิเคชันใช้งานได้
- ตั้งค่า
การยืนยัน
OEM ต้องยืนยันการใช้งานของตนเพื่อให้มั่นใจว่าจะมีลักษณะการทำงานตามที่คาดไว้ในสถานการณ์ทั่วไป การทดสอบ CTS และการทดสอบที่ใช้ Jetpack WindowManager พร้อมให้บริการแก่ OEM สำหรับการทดสอบการใช้งาน
การทดสอบ CTS
หากต้องการเรียกใช้การทดสอบ CTS โปรดดูเรียกใช้การทดสอบ CTS การทดสอบ CTS
ที่เกี่ยวข้องกับ Jetpack WindowManager อยู่ใน
cts/tests/framework/base/windowmanager/jetpack/
ชื่อโมดูลการทดสอบคือ CtsWindowManagerJetpackTestCases
การทดสอบ WindowManager
หากต้องการดาวน์โหลดการทดสอบ Jetpack WindowManager ให้ทำตามคำแนะนำของ Android Jetpack
การทดสอบจะอยู่ในไลบรารีหน้าต่างในwindow:window
โมดูลต่อไปนี้
window/window/src/androidTest/
หากต้องการเรียกใช้การทดสอบอุปกรณ์สำหรับโมดูล window:window
จากบรรทัดคำสั่ง ให้ทำดังนี้
- เสียบอุปกรณ์ที่เปิดใช้ตัวเลือกสำหรับนักพัฒนาแอปและการแก้ไขข้อบกพร่อง USB
- อนุญาตให้คอมพิวเตอร์แก้ไขข้อบกพร่องของอุปกรณ์
- เปิดเชลล์ในไดเรกทอรีรากของที่เก็บ androidx
- เปลี่ยนไดเรกทอรีเป็น
framework/support
- เรียกใช้คำสั่งต่อไปนี้:
./gradlew window:window:connectedAndroidTest
- วิเคราะห์ผลลัพธ์
หากต้องการเรียกใช้การทดสอบจาก Android Studio ให้ทำดังนี้
- เปิด Android Studio
- เสียบอุปกรณ์ที่เปิดใช้ตัวเลือกสำหรับนักพัฒนาแอปและการแก้ไขข้อบกพร่อง USB
- อนุญาตให้คอมพิวเตอร์แก้ไขข้อบกพร่องของอุปกรณ์
- ไปที่การทดสอบภายในไลบรารีหน้าต่างของโมดูลหน้าต่าง
- เปิดชั้นเรียนทดสอบและเรียกใช้โดยใช้ลูกศรสีเขียวทางด้านขวาของ เอดิเตอร์
หรือจะสร้างการกำหนดค่าใน Android Studio เพื่อเรียกใช้เมธอดทดสอบ คลาสทดสอบ หรือการทดสอบทั้งหมดในโมดูลก็ได้
คุณวิเคราะห์ผลลัพธ์ได้ด้วยตนเองโดยดูเอาต์พุตของเชลล์ ระบบจะข้ามการทดสอบบางอย่างหากอุปกรณ์ไม่เป็นไปตามสมมติฐานบางอย่าง ระบบจะบันทึกผลลัพธ์ในตำแหน่งมาตรฐาน และนักวิเคราะห์สามารถเขียนสคริปต์เพื่อทำให้การวิเคราะห์ผลลัพธ์เป็นไปโดยอัตโนมัติ