Tổng quan về việc xây dựng cho Android XR

Android XR là phần mở rộng của nền tảng và hệ sinh thái Android. SDK Android XR được thiết kế để cho phép bạn xây dựng ứng dụng XR bằng các khung và công cụ Android quen thuộc hoặc sử dụng các tiêu chuẩn mở như OpenXR và WebXR. Tất cả ứng dụng tương thích dành cho thiết bị di động hoặc màn hình lớn đều có thể cài đặt trên tai nghe XR qua Cửa hàng Play. Xem xét các điểm cần cân nhắc về khả năng tương thích để xem ứng dụng của bạn có tương thích hay không.

Hướng dẫn này giải thích các khía cạnh sau:

  • Chọn công cụ và công nghệ phát triển
  • Thiết kế ứng dụng cho Android XR
  • Định cấu hình tệp kê khai của ứng dụng
  • Những điều cần cân nhắc về khả năng tương thích của tệp kê khai ứng dụng
  • Tìm hiểu về quyền cho Android XR
  • Đảm bảo chất lượng ứng dụng Android XR
  • Đóng gói và phân phối ứng dụng cho Android XR

Chọn công cụ và công nghệ phát triển

Khi xây dựng ứng dụng cho Android XR, bạn có thể chọn trong số các nền tảng và công nghệ phát triển sau:

SDK Jetpack XR

SDK Jetpack XR chứa các thư viện Jetpack Android XR được xây dựng để tận dụng các tính năng độc đáo của thiết bị XR. Hãy bắt đầu với SDK này nếu bạn muốn làm một trong những việc sau:

  • Tối ưu hoá hoặc nâng cao ứng dụng hiện có dành cho thiết bị di động hoặc máy tính bảng Android
  • Tạo ứng dụng Android XR mới bằng Android Studio và Jetpack

Nếu bạn đã quen với việc phát triển bằng Android Jetpack, thì SDK Jetpack XR là một lựa chọn phù hợp với bạn. Thư viện này được thiết kế để tích hợp liền mạch với các khung và thư viện đó, đồng thời cho phép bạn sử dụng kiến thức hiện có để xây dựng các trải nghiệm XR sống động.

Tìm hiểu thêm về cách phát triển bằng SDK Jetpack XR.

Unity

Unity Engine là một công cụ phát triển 3D theo thời gian thực, cho phép các nghệ sĩ, nhà thiết kế và nhà phát triển cộng tác để tạo ra trải nghiệm sống động và tương tác. Tính năng hỗ trợ Android XR của Unity giúp bạn có quyền kiểm soát cao đối với trải nghiệm 3D mà bạn phát triển, đồng thời hưởng lợi từ hệ sinh thái nhà phát triển và tính năng hỗ trợ OpenXR đã được thiết lập của Unity.

Nếu bạn đã có trải nghiệm XR được tạo bằng Unity hoặc nếu bạn đã quen thuộc với việc phát triển Unity, hãy bắt đầu với tuỳ chọn này.

Tìm hiểu thêm về cách phát triển bằng Unity cho Android XR.

OpenXR

OpenXR là một tiêu chuẩn mở, miễn phí bản quyền có thể dùng để tạo trải nghiệm XR đa nền tảng, hiệu suất cao. Android XR hỗ trợ OpenXR 1.0 và 1.1, đồng thời chúng tôi đang mở rộng thông số kỹ thuật bằng các tiện ích mới cho Android XR. Vì Android XR được xây dựng dựa trên các tiêu chuẩn mở, nên các công cụ phát triển hỗ trợ OpenXR và Android phải tương thích với Android XR.

Tìm hiểu thêm về khả năng hỗ trợ OpenXR cho Android XR.

WebXR

WebXR cho phép bạn xây dựng trải nghiệm sống động cho web. API này cung cấp quyền truy cập vào các thiết bị VR và AR trong các trình duyệt web tương thích, chẳng hạn như Chrome trên Android XR.

Hãy bắt đầu với tuỳ chọn này nếu bạn muốn xây dựng trải nghiệm XR cho web hoặc nếu bạn muốn thêm các tính năng XR vào ứng dụng web. Các trải nghiệm WebXR hiện có cũng sẽ hoạt động trên Android XR.

Tìm hiểu thêm về cách tạo ứng dụng web bằng WebXR.

Thiết kế cho XR

XR mở rộng bề mặt thiết kế ngoài màn hình phẳng truyền thống; bạn có thể thiết kế các trải nghiệm sống động kết hợp thực tế vật lý và thực tế ảo. Dù bạn đang tạo một trải nghiệm hoàn toàn mới hay thêm các thành phần sống động vào một ứng dụng hiện có, hướng dẫn thiết kế cho Android XR có thể giúp bạn bắt đầu.

Định cấu hình tệp kê khai của ứng dụng

Cũng như các dự án ứng dụng Android khác, ứng dụng Android XR của bạn phải có tệp AndroidManifest.xml với các chế độ cài đặt tệp kê khai cụ thể. Tệp kê khai mô tả thông tin thiết yếu về ứng dụng của bạn cho các công cụ xây dựng của Android, hệ điều hành Android và Google Play. Hãy xem hướng dẫn tổng quan về tệp kê khai ứng dụng để biết thêm thông tin.

Đối với ứng dụng XR khác biệt, tệp kê khai của bạn phải chứa các phần tử và thuộc tính sau:

Thuộc tính PROPERTY_ACTIVITY_XR_START_MODE

Thuộc tính android:name="android.window.PROPERTY_ACTIVITY_XR_START_MODE" cho hệ thống biết rằng một hoạt động sẽ được khởi chạy ở một chế độ cụ thể khi hoạt động đó bắt đầu.

Thuộc tính này có thể có 3 giá trị:

  • XR_ACTIVITY_START_MODE_HOME_SPACE (chỉ dành cho SDK Jetpack XR)
  • XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED (chỉ dành cho SDK Jetpack XR)
  • XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED (chỉ OpenXR)

XR_ACTIVITY_START_MODE_HOME_SPACE

(Chỉ dành cho các ứng dụng được tạo bằng SDK Jetpack XR)

Sử dụng chế độ khởi động này để chạy ứng dụng trong Không gian nhà. Trong Home Space, nhiều ứng dụng có thể chạy cạnh nhau để người dùng có thể làm nhiều việc cùng lúc. Mọi ứng dụng Android dành cho thiết bị di động hoặc màn hình lớn đều có thể hoạt động trong Không gian chính, cũng như các ứng dụng XR được tạo bằng SDK Jetpack XR.

<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

(Chỉ dành cho các ứng dụng được tạo bằng SDK Jetpack XR)

Sử dụng chế độ khởi động này để chạy ứng dụng ở Chế độ toàn màn hình. Ở chế độ Toàn bộ không gian, mỗi lần chỉ có một ứng dụng chạy, không có ranh giới không gian và tất cả ứng dụng khác đều bị ẩn.


<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

(Chỉ dành cho ứng dụng được xây dựng bằng OpenXR)

Các ứng dụng được tạo bằng OpenXR sẽ chạy ở chế độ Toàn không gian và phải sử dụng chế độ khởi động XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED. Tín hiệu không gian đầy đủ không được quản lý đến Android XR mà ứng dụng sử dụng 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>

Các tính năng của PackageManager dành cho ứng dụng XR

Khi phân phối ứng dụng thông qua Cửa hàng Google Play, bạn có thể chỉ định các tính năng phần cứng hoặc phần mềm bắt buộc trong tệp kê khai ứng dụng. Phần tử uses-feature cho phép Cửa hàng Play lọc các ứng dụng hiển thị cho người dùng một cách phù hợp.

Các tính năng sau đây dành riêng cho ứng dụng XR.

android.software.xr.immersive

Nếu ứng dụng của bạn nhắm đến nền tảng Android XR và chỉ chạy trên các nền tảng hỗ trợ XR, hãy đặt giá trị thành true. Nếu ứng dụng của bạn có một số tính năng được tối ưu hoá cho XR nhưng cũng có thể chạy trên các thiết bị không phải XR, hãy đặt giá trị thành false.

Bắt buộc phải đặt giá trị này thành true đối với các ứng dụng được tạo bằng OpenXR hoặc Unity.

<uses-feature android:name="android.software.xr.immersive" android:required="true" />

android.hardware.xr.input.controller

Tính năng này cho biết ứng dụng yêu cầu đầu vào từ một bộ điều khiển chuyển động 6DoF (độ tự do) có độ chính xác cao để hoạt động chính xác. Nếu ứng dụng của bạn hỗ trợ tay điều khiển và không thể hoạt động nếu không có tay điều khiển, hãy đặt giá trị thành true. Nếu ứng dụng của bạn hỗ trợ tay điều khiển nhưng có thể hoạt động mà không cần tay điều khiển, hãy đặt giá trị này thành false.

<uses-feature android:name="android.hardware.xr.input.controller" android:required="true" />

android.hardware.xr.input.hand_tracking

Cờ này cho biết ứng dụng yêu cầu tính năng theo dõi chuyển động tay có độ trung thực cao để hoạt động chính xác, bao gồm cả vị trí, hướng và vận tốc của các khớp trong bàn tay của người dùng. Nếu ứng dụng của bạn hỗ trợ tính năng theo dõi cử chỉ tay và không thể hoạt động nếu không có tính năng này, hãy đặt giá trị thành true. Nếu ứng dụng của bạn hỗ trợ tính năng theo dõi chuyển động tay nhưng có thể hoạt động mà không cần tính năng này, hãy đặt giá trị thành false.

<uses-feature android:name="android.hardware.xr.input.hand_tracking" android:required="true" />

android.hardware.xr.input.eye_tracking

Cờ này cho biết ứng dụng yêu cầu tính năng theo dõi mắt có độ chân thực cao để hoạt động đầu vào hoạt động chính xác. Nếu ứng dụng của bạn hỗ trợ tính năng theo dõi chuyển động mắt để nhập dữ liệu và không thể hoạt động nếu không có tính năng này, hãy đặt giá trị thành true. Nếu ứng dụng của bạn hỗ trợ tính năng theo dõi chuyển động mắt để nhập dữ liệu nhưng có thể hoạt động mà không cần tính năng này, hãy đặt giá trị thành false.

<uses-feature android:name="android.hardware.xr.input.eye_tracking" android:required="true" />

Những điểm cần cân nhắc về khả năng tương thích của tệp kê khai ứng dụng đối với ứng dụng dành cho thiết bị di động và màn hình lớn

Như mô tả trong phần Các tính năng của PackageManager cho ứng dụng XR, các ứng dụng khai báo rằng chúng sử dụng một tính năng bằng cách khai báo tính năng đó trong phần tử <uses-feature> trong tệp kê khai ứng dụng. Một số tính năng, chẳng hạn như điện thoại hoặc GPS, có thể không tương thích với tất cả thiết bị.

Tính năng không được hỗ trợ

Cửa hàng Google Play lọc các ứng dụng có thể cài đặt trên thiết bị bằng cách sử dụng các nội dung khai báo tính năng Android sau.

Phần cứng máy ảnh

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

Khả năng kết nối

android.hardware.ethernet

android.hardware.uwb

android.hardware.ipsec_tunnel_migration

Cấu hình thiết bị

android.hardware.ram.low

Cấu hình kiểu dáng

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

Đầu vào

android.hardware.consumerir

android.software.input_methods

Vị trí

android.hardware.location.gps

Giao tiếp phạm vi gần

android.hardware.nfc

android.hardware.nfc.ese

android.hardware.nfc.hce

android.hardware.nfc.hcef

android.hardware.nfc.uicc

android.hardware.nfc.beam

Cấu hình bảo mật và phần cứng

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

Cảm biến

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

Cấu hình phần mềm

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

Điện thoại

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

Thực tế ảo (cũ)

android.hardware.vr.headtracking

android.hardware.vr.high_performance

android.software.vr.mode

Tiện ích

android.software.app_widgets

Tìm hiểu về các quyền cho XR

Cũng giống như các ứng dụng trên thiết bị di động và các kiểu dáng khác, một số chức năng do ứng dụng XR cung cấp có thể yêu cầu ứng dụng của bạn khai báo quyền trong tệp AndroidManifest của ứng dụng. Trong trường hợp quyền nguy hiểm, ứng dụng của bạn có thể cần yêu cầu quyền khi bắt đầu chạy. Hãy đọc bài viết Quyền trên Androidcác phương pháp hay nhất về quyền để biết thêm thông tin chi tiết.

Quyền đối với các tính năng XR

Các quyền sau đây có thể được ứng dụng XR sử dụng. Tất cả các quyền trong phần này đều được coi là quyền nguy hiểm, vì vậy, bạn phải khai báo các quyền đó trong tệp kê khai ứng dụng yêu cầu các quyền đó trong thời gian chạy.

android.permission.EYE_TRACKING

Các trường hợp sử dụng yêu cầu quyền này

Biểu thị hướng và tư thế mắt của người dùng, cho mục đích tạo hình đại diện

Các tính năng SDK Jetpack XR yêu cầu quyền này

không áp dụng

Các tiện ích OpenXR yêu cầu quyền này

XR_ANDROID_avatar_eyes

Các tính năng của Unity yêu cầu quyền này

Android XR: AR Face

android.permission.EYE_TRACKING_FINE

Các trường hợp sử dụng yêu cầu quyền này

Nhập và tương tác bằng ánh mắt

Các tính năng SDK Jetpack XR yêu cầu quyền này

không áp dụng

Các tiện ích OpenXR yêu cầu quyền này

XR_EXT_eye_gaze_interaction

Các tính năng của Unity yêu cầu quyền này

Eye Gaze Interaction

android.permission.FACE_TRACKING

Các trường hợp sử dụng yêu cầu quyền này

Theo dõi và kết xuất biểu cảm khuôn mặt

Các tính năng SDK Jetpack XR yêu cầu quyền này

không áp dụng

Các tiện ích OpenXR yêu cầu quyền này

XR_ANDROID_face_tracking

Các tính năng của Unity yêu cầu quyền này

XRFaceTrackingFeature

android.permission.HAND_TRACKING

Các trường hợp sử dụng yêu cầu quyền này

Theo dõi tư thế khớp tay và tốc độ góc và tuyến tính; Sử dụng bản trình bày lưới của bàn tay người dùng

Các tính năng SDK Jetpack XR yêu cầu quyền này

không áp dụng

Các tiện ích OpenXR yêu cầu quyền này

XR_ANDROID_hand_mesh

XR_EXT_hand_tracking

Các tính năng của Unity yêu cầu quyền này

XR Hands

XRHandMeshFeature

android.permission.SCENE_UNDERSTANDING

Các trường hợp sử dụng yêu cầu quyền này

Ước tính ánh sáng; chiếu truyền qua lên bề mặt lưới; thực hiện truyền tia đối với các đối tượng có thể theo dõi trong môi trường; theo dõi mặt phẳng; theo dõi đối tượng; xử lý độ sâu để che khuất và kiểm thử lượt nhấn; neo cố định.

Các tính năng SDK Jetpack XR yêu cầu quyền này

Theo dõi máy bay

Thử nghiệm nhấn

Khả năng lưu trữ cố định của neo

Các tiện ích OpenXR yêu cầu quyền này

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

Các tính năng của Unity yêu cầu quyền này

XRAnchorFeature

XRDepthTextureFeature

XRLightEstimationFeature

XRPassthroughFeature

XRTrackableFeature

XRObjectTrackingFeature

Đảm bảo chất lượng ứng dụng Android XR

Để đảm bảo ứng dụng của bạn mang lại trải nghiệm chất lượng cao cho người dùng, hãy xem lại nguyên tắc về chất lượng ứng dụng Android XR.

Đóng gói và phân phối ứng dụng cho Android XR

Android XR mang đến nhiều ứng dụng và trải nghiệm cho tai nghe XR thông qua Google Play. Trong hướng dẫn đóng gói và phân phối ứng dụng cho Android XR, bạn sẽ tìm thấy thông tin về cách bắt đầu sử dụng Cửa hàng Play và Play Console, phát hành kênh, chuẩn bị gói ứng dụng Android và các quy định hạn chế về kích thước ứng dụng.