ก่อนเริ่มสร้างด้วยส่วนขยาย OpenXR ที่รองรับหรือด้วยเอนจินที่รองรับ โปรดอ่านข้อมูลและทําภารกิจในส่วนต่อไปนี้ เพื่อให้แน่ใจว่าได้กําหนดค่าแอปสําหรับการพัฒนา XR แบบสมจริงแล้ว
กำหนดค่าไฟล์ Manifest ของแอป
เช่นเดียวกับโปรเจ็กต์แอป Android อื่นๆ แอป Android XR ต้องมี
AndroidManifest.xml ที่มีการตั้งค่า Manifest ที่เฉพาะเจาะจง ไฟล์ Manifest
จะอธิบายข้อมูลสำคัญเกี่ยวกับแอปของคุณให้เครื่องมือบิลด์ของ Android, ระบบปฏิบัติการ Android และ Google Play ทราบ ดูข้อมูลเพิ่มเติมได้ที่คู่มือภาพรวมไฟล์ Manifest ของแอป
สำหรับแอป XR ที่แตกต่าง ไฟล์ Manifest ต้องมีองค์ประกอบและแอตทริบิวต์ต่อไปนี้
พร็อพเพอร์ตี้ PROPERTY_XR_ACTIVITY_START_MODE
พร็อพเพอร์ตี้ android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE"
ช่วยให้ระบบทราบว่าควรเปิดใช้กิจกรรมในโหมดใดเมื่อ
เริ่มกิจกรรม
พร็อพเพอร์ตี้นี้มีค่าดังนี้
XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED(OpenXR เท่านั้น)
XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED
แอปที่สร้างด้วย OpenXR จะเปิดใน Full Space และต้องใช้
XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED โหมดเริ่มต้น Full Space ที่ไม่มีการจัดการ
จะส่งสัญญาณไปยัง Android XR ว่าแอปใช้ OpenXR
<manifest ... >
<application ... >
<property
android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE"
android:value="XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED" />
<activity
android:name="com.example.myapp.MainActivity" ... >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
พร็อพเพอร์ตี้ PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED
พร็อพเพอร์ตี้ android:name="android.window.PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED"
จะระบุว่าควรเปิดแอปพลิเคชันด้วยขอบเขตประเภทใด
แอปของคุณต้องระบุ
XR_BOUNDARY_TYPE_LARGE หากออกแบบมาเพื่อให้
ผู้ใช้เคลื่อนที่ไปรอบๆ พื้นที่จริง การระบุ
XR_BOUNDARY_TYPE_NO_RECOMMENDATION จะไม่
แนะนำประเภทขอบเขตความปลอดภัย ดังนั้นระบบจะใช้ประเภท
ที่มีการใช้งานอยู่แล้ว
<manifest ... >
<application ... >
<property
android:name="android.window.PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED"
android:value="XR_BOUNDARY_TYPE_LARGE" />
</application>
</manifest>
<uses-native-library> OpenXR
แอปพลิเคชัน OpenXR ต้องประกาศการใช้ไลบรารี OpenXR แบบเนทีฟเพื่อโหลดรันไทม์ให้สำเร็จ หากไม่มีการประกาศนี้ รันไทม์จะโหลดไม่สำเร็จ
<manifest ... >
<application ... >
<uses-native-library android:name="libopenxr.google.so" android:required="false" />
<activity
android:name="com.example.myapp.MainActivity" ... >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
ฟีเจอร์ PackageManager สำหรับแอป XR
เมื่อจัดจำหน่ายแอปผ่าน Google Play Store คุณจะระบุฟีเจอร์ฮาร์ดแวร์หรือซอฟต์แวร์ที่จำเป็นในไฟล์ Manifest ของแอปได้ องค์ประกอบ
uses-feature ช่วยให้ Play Store
กรองแอปที่แสดงต่อผู้ใช้ได้อย่างเหมาะสม
ฟีเจอร์ต่อไปนี้เป็นฟีเจอร์เฉพาะสำหรับแอปที่แตกต่างกันใน XR
android.software.xr.api.openxr
แอปที่กำหนดเป้าหมายเป็นแพลตฟอร์ม Android XR และสร้างด้วย OpenXR หรือ Unity ต้อง
รวมฟีเจอร์นี้ไว้ในไฟล์ Manifest ของแอปโดยตั้งค่าแอตทริบิวต์ android:required เป็น true
แอปที่ใช้ Android XR Extensions Package สำหรับ Unity เวอร์ชัน 1.0.0 ขึ้นไปหรือ Unity OpenXR: Android XR Package เวอร์ชัน 0.5.0-exp.1 ขึ้นไปไม่จำเป็นต้องเพิ่มองค์ประกอบนี้ลงในไฟล์ Manifest ของแอปด้วยตนเอง แพ็กเกจทั้ง 2 นี้จะแทรกองค์ประกอบนี้ลงในไฟล์ Manifest ของแอปให้คุณ
อุปกรณ์อาจระบุเวอร์ชันสำหรับฟีเจอร์นี้ ซึ่งบ่งบอกถึงเวอร์ชันสูงสุดของ OpenXR ที่อุปกรณ์รองรับ บิต 16 บิตบนแสดงถึง
หมายเลขหลัก และบิต 16 บิตล่างแสดงถึงหมายเลขย่อย เช่น หากต้องการระบุ OpenXR เวอร์ชัน 1.1 ให้ตั้งค่าเป็น "0x00010001"
แอปสามารถใช้เวอร์ชันฟีเจอร์เพื่อระบุ OpenXR เวอร์ชันขั้นต่ำที่แอปต้องการได้ ตัวอย่างเช่น หากแอปของคุณต้องรองรับ OpenXR เวอร์ชัน 1.1 ให้ประกาศฟีเจอร์ต่อไปนี้
<uses-feature android:name="android.software.xr.api.openxr"
android:version="0x00010001"
android:required="true" />
android.hardware.xr.input.controller
ฟีเจอร์นี้ระบุว่าแอปต้องใช้ข้อมูลจากตัวควบคุมการเคลื่อนไหว 6DoF
(องศาอิสระ) ที่มีความแม่นยำสูงเพื่อให้ทำงานได้อย่างถูกต้อง หากแอป
รองรับคอนโทรลเลอร์และทำงานไม่ได้หากไม่มีคอนโทรลเลอร์ ให้ตั้งค่าเป็น true
หากแอปของคุณรองรับคอนโทรลเลอร์แต่ใช้งานได้โดยไม่ต้องใช้คอนโทรลเลอร์ ให้ตั้งค่าเป็น
false
<!-- Sets android:required to true, indicating that your app can't function on devices without controllers. -->
<uses-feature android:name="android.hardware.xr.input.controller" android:required="true" />
android.hardware.xr.input.hand_tracking
แฟล็กนี้บ่งชี้ว่าแอปต้องใช้การติดตามมือที่มีความเที่ยงตรงสูงเพื่อให้ทำงานได้อย่างถูกต้อง ซึ่งรวมถึงตำแหน่ง การวางแนว และความเร็วของข้อต่อในมือของผู้ใช้ หากแอปของคุณรองรับการติดตามมือและทำงานไม่ได้หากไม่มีฟีเจอร์นี้ ให้ตั้งค่าเป็น true หากแอปของคุณรองรับการติดตามมือ แต่สามารถทำงานได้โดยไม่ใช้การติดตามมือ ให้ตั้งค่าเป็น false
<!-- Sets android:required to true, indicating that your app can't function on devices without hand tracking. -->
<uses-feature android:name="android.hardware.xr.input.hand_tracking" android:required="true" />
android.hardware.xr.input.eye_tracking
แฟล็กนี้ระบุว่าแอปต้องใช้การติดตามดวงตาที่มีความเที่ยงตรงสูงสำหรับการป้อนข้อมูล
เพื่อให้ทำงานได้อย่างถูกต้อง หากแอปของคุณรองรับการติดตามดวงตาสำหรับการป้อนข้อมูลและทำงานไม่ได้หากไม่มีฟีเจอร์นี้ ให้ตั้งค่าเป็น true หากแอปของคุณรองรับการติดตามดวงตา
สำหรับการป้อนข้อมูล แต่สามารถทำงานได้โดยไม่ต้องใช้การติดตามดวงตา ให้ตั้งค่าเป็น false
<!-- Sets android:required to true, indicating that your app can't function on devices without eye tracking. -->
<uses-feature android:name="android.hardware.xr.input.eye_tracking" android:required="true" />
ขั้นตอนถัดไป
เมื่อกำหนดค่าไฟล์ Manifest ของแอปและตรวจสอบข้อมูลสำคัญเสร็จแล้ว ให้ดูวิธีสร้างแอปด้วย OpenXR