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.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
Khả năng kết nối
android.hardware.ipsec_tunnel_migration
Cấu hình thiết bị
Cấu hình kiểu dáng
android.hardware.type.automotive
android.hardware.type.embedded
android.hardware.type.television
android.software.leanback_only
Đầu vào
android.software.input_methods
Vị trí
Giao tiếp phạm vi gần
Cấu hình bảo mật và phần cứng
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
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.relative_humidity
android.hardware.sensor.stepcounter
android.hardware.sensor.stepdetector
Cấu hình phần mềm
android.software.connectionservice
android.software.expanded_picture_in_picture
android.software.live_wallpaper
android.software.picture_in_picture
android.software.wallet_location_based_suggestions
Điện thoại
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
Thực tế ảo (cũ)
android.hardware.vr.headtracking
android.hardware.vr.high_performance
Tiện ích
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 Android và cá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 và 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
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
Các tính năng của Unity yêu cầu quyền này
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
Các tính năng của Unity yêu cầu quyền này
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
Các tính năng của Unity yêu cầu quyền này
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
Các tính năng của Unity yêu cầu quyền này
Đả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.