Android XR เป็นส่วนขยายของแพลตฟอร์มและระบบนิเวศของ Android Android XR SDK ออกแบบมาเพื่อช่วยให้คุณสร้างแอป XR โดยใช้เฟรมเวิร์กและเครื่องมือ Android ที่คุ้นเคย หรือใช้มาตรฐานแบบเปิด เช่น OpenXR และ WebXR แอปบนอุปกรณ์เคลื่อนที่หรือหน้าจอขนาดใหญ่ทั้งหมดที่เข้ากันได้จะพร้อมให้ติดตั้งในชุดหูฟัง XR จาก Play Store โปรดอ่านข้อควรพิจารณาด้านความเข้ากันได้เพื่อดูว่าแอปของคุณเข้ากันได้หรือไม่
คู่มือนี้จะอธิบายเรื่องต่อไปนี้
- การเลือกเครื่องมือและเทคโนโลยีการพัฒนา
- การออกแบบแอปสำหรับ Android XR
- การกำหนดค่าไฟล์ Manifest ของแอป
- ข้อควรพิจารณาเกี่ยวกับความเข้ากันได้ของไฟล์ Manifest ของแอป
- ทำความเข้าใจสิทธิ์สำหรับ Android XR
- การดูแลคุณภาพของแอป Android XR
- การรวมแพ็กเกจและการจัดจำหน่ายแอปสำหรับ Android XR
เลือกเครื่องมือและเทคโนโลยีการพัฒนา
เมื่อสร้างแอปสำหรับ Android XR คุณสามารถเลือกแพลตฟอร์มและเทคโนโลยีการพัฒนาต่อไปนี้
Jetpack XR SDK
Jetpack XR SDK มีไลบรารี Jetpack ของ Android XR ที่สร้างขึ้นเพื่อใช้ประโยชน์จากความสามารถเฉพาะของอุปกรณ์ XR เริ่มต้นด้วย SDK นี้หากต้องการทําอย่างใดอย่างหนึ่งต่อไปนี้
- เพิ่มประสิทธิภาพหรือปรับปรุงแอปบนอุปกรณ์เคลื่อนที่หรือแท็บเล็ต Android ที่มีอยู่
- สร้างแอป Android XR ใหม่โดยใช้ Android Studio และ Jetpack
หากคุณคุ้นเคยกับการพัฒนาด้วย Android Jetpack อยู่แล้ว Jetpack XR SDK เหมาะสําหรับคุณ โดยออกแบบมาให้ผสานรวมกับเฟรมเวิร์กและไลบรารีเหล่านั้นได้อย่างราบรื่น และให้คุณใช้ความรู้ที่มีอยู่เพื่อสร้างประสบการณ์ XR ที่สมจริง
ดูข้อมูลเพิ่มเติมเกี่ยวกับการพัฒนาด้วย Jetpack XR SDK
Unity
Unity Engine เป็นเครื่องมือพัฒนา 3 มิติแบบเรียลไทม์ที่ช่วยให้ผู้สร้างผลงาน ศิลปิน นักออกแบบ และผู้พัฒนาแอปทำงานร่วมกันเพื่อสร้างประสบการณ์ที่สมจริงและอินเทอร์แอกทีฟ การรองรับ Android XR ของ Unity ช่วยให้คุณควบคุมประสบการณ์ 3 มิติที่พัฒนาได้ในระดับสูง พร้อมรับประโยชน์จากการรองรับ OpenXR และระบบนิเวศของนักพัฒนาแอปที่ Unity สร้างขึ้น
หากคุณมีประสบการณ์ XR ที่สร้างขึ้นด้วย Unity อยู่แล้ว หรือคุ้นเคยกับการพัฒนาด้วย Unity ให้เริ่มต้นด้วยตัวเลือกนี้
ดูข้อมูลเพิ่มเติมเกี่ยวกับการพัฒนาด้วย Unity สำหรับ Android XR
OpenXR
OpenXR เป็นมาตรฐานแบบเปิดที่ไม่มีค่าสิทธิซึ่งสามารถใช้ในการสร้างประสบการณ์ XR ประสิทธิภาพสูงสำหรับหลายแพลตฟอร์ม Android XR รองรับ OpenXR 1.0 และ 1.1 และเรากำลังขยายข้อกำหนดด้วยส่วนขยายใหม่สำหรับ Android XR เนื่องจาก Android XR สร้างขึ้นจากมาตรฐานแบบเปิด เครื่องมือการพัฒนาที่รองรับ OpenXR และ Android จึงควรเข้ากันได้กับ Android XR
ดูข้อมูลเพิ่มเติมเกี่ยวกับการรองรับ OpenXR สำหรับ Android XR
WebXR
WebXR ช่วยให้คุณสร้างประสบการณ์ที่สมจริงสำหรับเว็บได้ ซึ่งจะมอบสิทธิ์เข้าถึงอุปกรณ์ VR และ AR ในเว็บเบราว์เซอร์ที่เข้ากันได้ เช่น Chrome ใน Android XR
เริ่มต้นด้วยตัวเลือกนี้หากต้องการสร้างประสบการณ์ XR สำหรับเว็บ หรือหากต้องการเพิ่มความสามารถ XR ลงในเว็บแอป ประสบการณ์ WebXR ที่มีอยู่จะทำงานบน Android XR ได้ด้วย
ดูข้อมูลเพิ่มเติมเกี่ยวกับการสร้างเว็บแอปด้วย WebXR
ออกแบบสำหรับ XR
XR ขยายพื้นที่การออกแบบให้ไกลกว่าหน้าจอแบนแบบดั้งเดิม คุณออกแบบประสบการณ์ที่สมจริงซึ่งผสมผสานโลกแห่งความจริงและโลกเสมือนจริงได้ ไม่ว่าคุณจะสร้างประสบการณ์การใช้งานแบบใหม่หรือเพิ่มองค์ประกอบที่สมจริงลงในแอปที่มีอยู่ คู่มือการออกแบบสำหรับ Android XR จะช่วยให้คุณเริ่มต้นใช้งานได้
กำหนดค่าไฟล์ Manifest ของแอป
แอป Android XR ต้องมีไฟล์ AndroidManifest.xml ที่มีการตั้งค่าไฟล์ Manifest ที่เฉพาะเจาะจงเช่นเดียวกับโปรเจ็กต์แอป Android อื่นๆ ไฟล์ Manifest จะอธิบายข้อมูลสำคัญเกี่ยวกับแอปของคุณให้กับเครื่องมือสร้าง Android, ระบบปฏิบัติการ Android และ Google Play ดูข้อมูลเพิ่มเติมได้ที่คู่มือภาพรวมของไฟล์ Manifest ของแอป
สำหรับแอปที่แตกต่างออกไปสำหรับ XR ไฟล์ Manifest ของคุณต้องมีองค์ประกอบและแอตทริบิวต์ต่อไปนี้
พร็อพเพอร์ตี้ PROPERTY_ACTIVITY_XR_START_MODE
พร็อพเพอร์ตี้ android:name="android.window.PROPERTY_ACTIVITY_XR_START_MODE"
ช่วยบอกให้ระบบทราบว่าควรเปิดใช้งานกิจกรรมในโหมดที่เฉพาะเจาะจงเมื่อเริ่มกิจกรรม
ค่าที่เป็นไปได้สำหรับพร็อพเพอร์ตี้นี้มี 3 ค่า ดังนี้
XR_ACTIVITY_START_MODE_HOME_SPACE
(Jetpack XR SDK เท่านั้น)XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED
(Jetpack XR SDK เท่านั้น)XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED
(OpenXR เท่านั้น)
XR_ACTIVITY_START_MODE_HOME_SPACE
(แอปที่สร้างด้วย Jetpack XR SDK เท่านั้น)
ใช้โหมดเริ่มต้นนี้เพื่อเปิดแอปในพื้นที่ทำงาน ในโฮมสเปซ แอปหลายแอปจะทำงานร่วมกันได้เพื่อให้ผู้ใช้ทำงานหลายอย่างพร้อมกันได้ แอป Android บนอุปกรณ์เคลื่อนที่หรือหน้าจอขนาดใหญ่จะทำงานในพื้นที่บ้านได้ รวมถึงแอป XR ที่สร้างขึ้นโดยใช้ Jetpack XR SDK
<manifest ... >
<application ... >
<property
android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE"
android:value="XR_ACTIVITY_START_MODE_HOME_SPACE" />
<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>
XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED
(แอปที่สร้างด้วย Jetpack XR SDK เท่านั้น)
ใช้โหมดเริ่มต้นนี้เพื่อเปิดแอปในโหมดเต็มหน้าจอ ในโหมดเต็มพื้นที่ จะมีเพียงแอปเดียวที่ทำงานในแต่ละครั้ง โดยไม่มีขอบเขตของพื้นที่ทำงาน และแอปอื่นๆ ทั้งหมดจะซ่อนอยู่
<manifest ... >
<application ... >
<property
android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE"
android:value="XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED" />
<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>
XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED
(แอปที่สร้างด้วย OpenXR เท่านั้น)
แอปที่สร้างด้วย OpenXR จะเปิดในโหมดพื้นที่เต็ม และต้องใช้XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED
โหมดเริ่มต้น พื้นที่ทำงานแบบเต็มที่ไม่มีการจัดการบ่งบอกให้ 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>
ฟีเจอร์ PackageManager สำหรับแอป XR
เมื่อเผยแพร่แอปผ่าน Google Play Store คุณจะระบุฟีเจอร์ฮาร์ดแวร์หรือซอฟต์แวร์ที่จำเป็นได้ในไฟล์ Manifest ของแอป องค์ประกอบ uses-feature
ช่วยให้ Play Store กรองแอปที่แสดงต่อผู้ใช้ได้อย่างเหมาะสม
ฟีเจอร์ต่อไปนี้มีไว้สำหรับแอป XR โดยเฉพาะ
android.software.xr.immersive
หากแอปกำหนดเป้าหมายเป็นแพลตฟอร์ม Android XR และทำงานได้เฉพาะบนแพลตฟอร์มที่รองรับ XR ให้ตั้งค่าเป็น "จริง" หากแอปของคุณมีฟีเจอร์ที่เพิ่มประสิทธิภาพสำหรับ XR แต่สามารถทำงานในอุปกรณ์ที่ไม่ใช่ XR ได้ด้วย ให้ตั้งค่าเป็นเท็จ
แอปที่สร้างด้วย OpenXR หรือ Unity ต้องตั้งค่านี้เป็น "จริง"
<uses-feature android:name="android.software.xr.immersive" android:required="true" />
android.hardware.xr.input.controller
ฟีเจอร์นี้บ่งบอกว่าแอปต้องใช้อินพุตจากตัวควบคุมการเคลื่อนไหว 6DoF (องศาอิสระ) ที่มีความแม่นยำสูงจึงจะทำงานได้อย่างถูกต้อง หากแอปรองรับตัวควบคุมและไม่สามารถทํางานได้หากไม่มีตัวควบคุม ให้ตั้งค่าเป็น "จริง" หากแอปรองรับตัวควบคุมแต่สามารถทำงานได้โดยไม่ต้องใช้ตัวควบคุม ให้ตั้งค่าเป็นเท็จ
<uses-feature android:name="android.hardware.xr.input.controller" android:required="true" />
android.hardware.xr.input.hand_tracking
ธงนี้บ่งบอกว่าแอปต้องใช้การติดตามมือที่ถูกต้องแม่นยำเพื่อให้ทำงานได้อย่างถูกต้อง ซึ่งรวมถึงตำแหน่ง การวางแนว และความเร็วของข้อต่อในมือของผู้ใช้ หากแอปรองรับการติดตามมือและไม่สามารถทำงานได้หากไม่มีฟีเจอร์นี้ ให้ตั้งค่าเป็น "จริง" หากแอปรองรับการติดตามมือ แต่สามารถทำงานได้โดยไม่ต้องใช้การติดตามมือ ให้ตั้งค่าเป็นเท็จ
<uses-feature android:name="android.hardware.xr.input.hand_tracking" android:required="true" />
android.hardware.xr.input.eye_tracking
Flag นี้บ่งบอกว่าแอปต้องใช้การติดตามการเคลื่อนไหวของตาที่แม่นยำสูงเพื่อให้อินพุตทำงานได้อย่างถูกต้อง หากแอปรองรับการติดตามสายตาเพื่อป้อนข้อมูลและไม่สามารถทํางานได้หากไม่มี ให้ตั้งค่าเป็น "จริง" หากแอปรองรับการติดตามการเคลื่อนไหวของตาเพื่อรับอินพุต แต่สามารถทำงานได้โดยไม่ต้องใช้ ให้ตั้งค่าเป็นเท็จ
<uses-feature android:name="android.hardware.xr.input.eye_tracking" android:required="true" />
ข้อควรพิจารณาด้านความเข้ากันได้ของไฟล์ Manifest ของแอปสำหรับแอปบนอุปกรณ์เคลื่อนที่และแอปหน้าจอขนาดใหญ่
ตามที่อธิบายไว้ในส่วนฟีเจอร์ PackageManager สำหรับแอป XR แอปจะประกาศว่าใช้ฟีเจอร์โดยการประกาศในองค์ประกอบ <uses-feature>
ในไฟล์ Manifest ของแอป ฟีเจอร์บางอย่าง เช่น การโทรหรือ GPS อาจใช้งานร่วมกับอุปกรณ์บางรุ่นไม่ได้
ฟีเจอร์ที่ไม่รองรับ
Google Play Store จะกรองแอปพลิเคชันที่พร้อมให้ติดตั้งในอุปกรณ์โดยใช้การประกาศฟีเจอร์ Android ต่อไปนี้
ฮาร์ดแวร์ของกล้อง
android.hardware.camera.autofocus
android.hardware.camera.capability.manual_post_processing
android.hardware.camera.capability.manual_sensor
android.hardware.camera.capability.raw
android.hardware.camera.concurrent
android.hardware.camera.external
android.hardware.camera.level.full
การเชื่อมต่อ
android.hardware.ipsec_tunnel_migration
การกำหนดค่าอุปกรณ์
การกำหนดค่ารูปแบบของอุปกรณ์
android.hardware.type.automotive
android.hardware.type.embedded
android.hardware.type.television
android.software.leanback_only
อินพุต
android.software.input_methods
ตำแหน่ง
Near Field Communication
การกำหนดค่าความปลอดภัยและฮาร์ดแวร์
android.hardware.se.omapi.uicc
android.hardware.biometrics.face
android.hardware.identity_credential
android.hardware.identity_credential_direct_access
android.hardware.keystore.limited_use_key
android.hardware.keystore.single_use_key
android.hardware.strongbox_keystore
เซ็นเซอร์
android.hardware.sensor.accelerometer_limited_axes
android.hardware.sensor.accelerometer_limited_axes_uncalibrated
android.hardware.sensor.ambient_temperature
android.hardware.sensor.barometer
android.hardware.sensor.gyroscope_limited_axes
android.hardware.sensor.gyroscope_limited_axes_uncalibrated
android.hardware.sensor.heading
android.hardware.sensor.heartrate
android.hardware.sensor.heartrate.ecg
android.hardware.sensor.hinge_angle
android.hardware.sensor.relative_humidity
android.hardware.sensor.stepcounter
android.hardware.sensor.stepdetector
การกําหนดค่าซอฟต์แวร์
android.software.connectionservice
android.software.expanded_picture_in_picture
android.software.live_wallpaper
android.software.picture_in_picture
android.software.wallet_location_based_suggestions
โทรศัพท์
android.hardware.telephony.calling
android.hardware.telephony.cdma
android.hardware.telephony.data
android.hardware.telephony.euicc
android.hardware.telephony.euicc.mep
android.hardware.telephony.gsm
android.hardware.telephony.ims
android.hardware.telephony.mbms
android.hardware.telephony.messaging
android.hardware.telephony.radio.access
android.hardware.telephony.subscription
Virtual Reality (เดิม)
android.hardware.vr.headtracking
android.hardware.vr.high_performance
วิดเจ็ต
ทำความเข้าใจสิทธิ์สำหรับ XR
ฟังก์ชันบางอย่างที่แอป XR นำเสนออาจกำหนดให้แอปของคุณประกาศสิทธิ์ในไฟล์ AndroidManifest ของแอป เช่นเดียวกับแอปในอุปกรณ์เคลื่อนที่และอุปกรณ์รูปแบบอื่นๆ ในกรณีของสิทธิ์ที่เป็นอันตราย แอปของคุณอาจต้องขอสิทธิ์รันไทม์ อ่านสิทธิ์ใน Android และแนวทางปฏิบัติแนะนำเกี่ยวกับสิทธิ์เพื่อดูข้อมูลเชิงลึกเพิ่มเติม
สิทธิ์สำหรับฟีเจอร์ XR
แอป XR อาจใช้สิทธิ์ต่อไปนี้ สิทธิ์ทั้งหมดในส่วนนี้ถือว่ามีความเสี่ยง คุณจึงต้องประกาศสิทธิ์เหล่านี้ในไฟล์ Manifest ของแอปและขอสิทธิ์เหล่านั้นในรันไทม์
android.permission.EYE_TRACKING
Use Case ที่ต้องใช้สิทธิ์นี้
แสดงท่าทางและการวางแนวของดวงตาของผู้ใช้เพื่อวัตถุประสงค์ในการสร้างรูปโปรไฟล์
ฟีเจอร์ของ Jetpack XR SDK ที่ต้องได้รับสิทธิ์นี้
ไม่มี
ส่วนขยาย OpenXR ที่ต้องใช้สิทธิ์นี้
ฟีเจอร์ของ Unity ที่ต้องได้รับสิทธิ์นี้
Android XR: ใบหน้า AR
android.permission.EYE_TRACKING_FINE
Use Case ที่ต้องใช้สิทธิ์นี้
อินพุตและการโต้ตอบด้วยการจ้องมอง
ฟีเจอร์ของ Jetpack XR SDK ที่ต้องได้รับสิทธิ์นี้
ไม่มี
ส่วนขยาย OpenXR ที่ต้องใช้สิทธิ์นี้
ฟีเจอร์ของ Unity ที่ต้องได้รับสิทธิ์นี้
android.permission.FACE_TRACKING
Use Case ที่ต้องใช้สิทธิ์นี้
การติดตามและการแสดงผลสีหน้า
ฟีเจอร์ของ Jetpack XR SDK ที่ต้องได้รับสิทธิ์นี้
ไม่มี
ส่วนขยาย OpenXR ที่ต้องใช้สิทธิ์นี้
ฟีเจอร์ของ Unity ที่ต้องได้รับสิทธิ์นี้
android.permission.HAND_TRACKING
Use Case ที่ต้องใช้สิทธิ์นี้
การติดตามท่าทางของข้อต่อมือและความเร็วเชิงมุมและเชิงเส้น การใช้การนำเสนอแบบเมชของมือผู้ใช้
ฟีเจอร์ของ Jetpack XR SDK ที่ต้องได้รับสิทธิ์นี้
ไม่มี
ส่วนขยาย OpenXR ที่ต้องใช้สิทธิ์นี้
ฟีเจอร์ของ Unity ที่ต้องได้รับสิทธิ์นี้
android.permission.SCENE_UNDERSTANDING
Use Case ที่ต้องใช้สิทธิ์นี้
การประมาณแสง การฉายภาพผ่านไปยังพื้นผิวของเมช การทำเรย์แคสต์กับสิ่งที่ติดตามได้ในสภาพแวดล้อม การติดตามระนาบ การติดตามวัตถุ การทำงานกับระดับความลึกสำหรับการบดบังและการทดสอบการตี หมุดคงที่
ฟีเจอร์ของ Jetpack XR SDK ที่ต้องได้รับสิทธิ์นี้
การติดตามเครื่องบิน
การทดสอบ Hit
การแสดงโฆษณา Anchor อย่างต่อเนื่อง
ส่วนขยาย OpenXR ที่ต้องใช้สิทธิ์นี้
ฟีเจอร์ Unity ที่ต้องได้รับสิทธิ์นี้
ตรวจสอบคุณภาพของแอป Android XR
โปรดอ่านหลักเกณฑ์ด้านคุณภาพของแอป Android XR เพื่อให้มั่นใจว่าแอปของคุณมอบประสบการณ์การใช้งานที่ยอดเยี่ยมแก่ผู้ใช้
แพ็กเกจและเผยแพร่แอปสำหรับ Android XR
Android XR นำเสนอแอปและประสบการณ์การใช้งานที่หลากหลายให้กับชุดหูฟัง XR ผ่าน Google Play ในคำแนะนำสำหรับการจัดแพ็กเกจและเผยแพร่แอปสำหรับ Android XR คุณจะเห็นข้อมูลเกี่ยวกับการเริ่มต้นใช้งาน Play Store และ Play Console, การเผยแพร่แทร็ก, การเตรียม App Bundle ของ Android และข้อจำกัดด้านขนาดแอป