ภาพรวมการสร้างสำหรับ Android XR

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.ar

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.flash

android.hardware.camera.level.full

การเชื่อมต่อ

android.hardware.ethernet

android.hardware.uwb

android.hardware.ipsec_tunnel_migration

การกำหนดค่าอุปกรณ์

android.hardware.ram.low

การกำหนดค่ารูปแบบของอุปกรณ์

android.hardware.type.automotive

android.hardware.type.embedded

android.hardware.type.pc

android.hardware.type.television

android.hardware.type.watch

android.software.leanback

android.software.leanback_only

android.software.live_tv

อินพุต

android.hardware.consumerir

android.software.input_methods

ตำแหน่ง

android.hardware.location.gps

Near Field Communication

android.hardware.nfc

android.hardware.nfc.ese

android.hardware.nfc.hce

android.hardware.nfc.hcef

android.hardware.nfc.uicc

android.hardware.nfc.beam

การกำหนดค่าความปลอดภัยและฮาร์ดแวร์

android.hardware.se.omapi.ese

android.hardware.se.omapi.sd

android.hardware.se.omapi.uicc

android.hardware.biometrics.face

android.hardware.fingerprint

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.light

android.hardware.sensor.relative_humidity

android.hardware.sensor.stepcounter

android.hardware.sensor.stepdetector

การกําหนดค่าซอฟต์แวร์

android.software.backup

android.software.connectionservice

android.software.expanded_picture_in_picture

android.software.live_wallpaper

android.software.picture_in_picture

android.software.telecom

android.software.wallet_location_based_suggestions

โทรศัพท์

android.hardware.telephony

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

android.software.sip

android.software.sip.voip

Virtual Reality (เดิม)

android.hardware.vr.headtracking

android.hardware.vr.high_performance

android.software.vr.mode

วิดเจ็ต

android.software.app_widgets

ทำความเข้าใจสิทธิ์สำหรับ XR

ฟังก์ชันบางอย่างที่แอป XR นำเสนออาจกำหนดให้แอปของคุณประกาศสิทธิ์ในไฟล์ AndroidManifest ของแอป เช่นเดียวกับแอปในอุปกรณ์เคลื่อนที่และอุปกรณ์รูปแบบอื่นๆ ในกรณีของสิทธิ์ที่เป็นอันตราย แอปของคุณอาจต้องขอสิทธิ์รันไทม์ อ่านสิทธิ์ใน Android และแนวทางปฏิบัติแนะนำเกี่ยวกับสิทธิ์เพื่อดูข้อมูลเชิงลึกเพิ่มเติม

สิทธิ์สำหรับฟีเจอร์ XR

แอป XR อาจใช้สิทธิ์ต่อไปนี้ สิทธิ์ทั้งหมดในส่วนนี้ถือว่ามีความเสี่ยง คุณจึงต้องประกาศสิทธิ์เหล่านี้ในไฟล์ Manifest ของแอปและขอสิทธิ์เหล่านั้นในรันไทม์

android.permission.EYE_TRACKING

Use Case ที่ต้องใช้สิทธิ์นี้

แสดงท่าทางและการวางแนวของดวงตาของผู้ใช้เพื่อวัตถุประสงค์ในการสร้างรูปโปรไฟล์

ฟีเจอร์ของ Jetpack XR SDK ที่ต้องได้รับสิทธิ์นี้

ไม่มี

ส่วนขยาย OpenXR ที่ต้องใช้สิทธิ์นี้

XR_ANDROID_avatar_eyes

ฟีเจอร์ของ Unity ที่ต้องได้รับสิทธิ์นี้

Android XR: ใบหน้า AR

android.permission.EYE_TRACKING_FINE

Use Case ที่ต้องใช้สิทธิ์นี้

อินพุตและการโต้ตอบด้วยการจ้องมอง

ฟีเจอร์ของ Jetpack XR SDK ที่ต้องได้รับสิทธิ์นี้

ไม่มี

ส่วนขยาย OpenXR ที่ต้องใช้สิทธิ์นี้

XR_EXT_eye_gaze_interaction

ฟีเจอร์ของ Unity ที่ต้องได้รับสิทธิ์นี้

Eye Gaze Interaction

android.permission.FACE_TRACKING

Use Case ที่ต้องใช้สิทธิ์นี้

การติดตามและการแสดงผลสีหน้า

ฟีเจอร์ของ Jetpack XR SDK ที่ต้องได้รับสิทธิ์นี้

ไม่มี

ส่วนขยาย OpenXR ที่ต้องใช้สิทธิ์นี้

XR_ANDROID_face_tracking

ฟีเจอร์ของ Unity ที่ต้องได้รับสิทธิ์นี้

XRFaceTrackingFeature

android.permission.HAND_TRACKING

Use Case ที่ต้องใช้สิทธิ์นี้

การติดตามท่าทางของข้อต่อมือและความเร็วเชิงมุมและเชิงเส้น การใช้การนำเสนอแบบเมชของมือผู้ใช้

ฟีเจอร์ของ Jetpack XR SDK ที่ต้องได้รับสิทธิ์นี้

ไม่มี

ส่วนขยาย OpenXR ที่ต้องใช้สิทธิ์นี้

XR_ANDROID_hand_mesh

XR_EXT_hand_tracking

ฟีเจอร์ของ Unity ที่ต้องได้รับสิทธิ์นี้

XR Hands

XRHandMeshFeature

android.permission.SCENE_UNDERSTANDING

Use Case ที่ต้องใช้สิทธิ์นี้

การประมาณแสง การฉายภาพผ่านไปยังพื้นผิวของเมช การทำเรย์แคสต์กับสิ่งที่ติดตามได้ในสภาพแวดล้อม การติดตามระนาบ การติดตามวัตถุ การทำงานกับระดับความลึกสำหรับการบดบังและการทดสอบการตี หมุดคงที่

ฟีเจอร์ของ Jetpack XR SDK ที่ต้องได้รับสิทธิ์นี้

การติดตามเครื่องบิน

การทดสอบ Hit

การแสดงโฆษณา Anchor อย่างต่อเนื่อง

ส่วนขยาย OpenXR ที่ต้องใช้สิทธิ์นี้

XR_ANDROID_anchor_persistence

XR_ANDROID_depth_texture

XR_ANDROID_light_estimation

XR_ANDROID_composition_layer_passthrough_mesh

XR_ANDROID_raycast

XR_ANDROID_trackables

XR_ANDROID_trackables_object

ฟีเจอร์ Unity ที่ต้องได้รับสิทธิ์นี้

XRAnchorFeature

XRDepthTextureFeature

XRLightEstimationFeature

XRPassthroughFeature

XRTrackableFeature

XRObjectTrackingFeature

ตรวจสอบคุณภาพของแอป Android XR

โปรดอ่านหลักเกณฑ์ด้านคุณภาพของแอป Android XR เพื่อให้มั่นใจว่าแอปของคุณมอบประสบการณ์การใช้งานที่ยอดเยี่ยมแก่ผู้ใช้

แพ็กเกจและเผยแพร่แอปสำหรับ Android XR

Android XR นำเสนอแอปและประสบการณ์การใช้งานที่หลากหลายให้กับชุดหูฟัง XR ผ่าน Google Play ในคำแนะนำสำหรับการจัดแพ็กเกจและเผยแพร่แอปสำหรับ Android XR คุณจะเห็นข้อมูลเกี่ยวกับการเริ่มต้นใช้งาน Play Store และ Play Console, การเผยแพร่แทร็ก, การเตรียม App Bundle ของ Android และข้อจำกัดด้านขนาดแอป