Làm quen với OpenXR cho Android XR

Các thiết bị XR áp dụng
Hướng dẫn này giúp bạn tạo trải nghiệm cho các loại thiết bị XR này.
Kính XR
Kính XR có dây

Trước khi bắt đầu tạo bằng các tiện ích OpenXR được hỗ trợ hoặc bằng một công cụ được hỗ trợ, hãy xem lại thông tin và hoàn tất mọi việc cần làm trong các phần sau để đảm bảo ứng dụng của bạn được định cấu hình cho quá trình phát triển XR sống động.

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

Giống như các dự án ứng dụng Android khác, ứng dụng Android XR của bạn phải có một 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 các ứng dụng XR riêng 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_XR_ACTIVITY_START_MODE

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

Thuộc tính này có các giá trị sau:

  • XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED (Chỉ OpenXR)

XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED

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

Thuộc tính android:name="android.window.PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED" cho biết rằng ứng dụng sẽ được khởi chạy với một loại ranh giới cụ thể. Ứng dụng của bạn cần chỉ định XR_BOUNDARY_TYPE_LARGE nếu được thiết kế để cho phép người dùng di chuyển trong không gian thực của họ. Việc chỉ định XR_BOUNDARY_TYPE_NO_RECOMMENDATION không đưa ra đề xuất nào về loại ranh giới an toàn, vì vậy, hệ thống sẽ sử dụng loại đang được dùng.

<manifest ... >

   <application ... >
       <property
           android:name="android.window.PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED"
           android:value="XR_BOUNDARY_TYPE_LARGE" />
   </application>
</manifest>

<uses-native-library> OpenXR

Các ứng dụng OpenXR phải khai báo việc sử dụng thư viện OpenXR gốc để tải thành công thời gian chạy của thư viện này. Nếu không có khai báo này, thời gian chạy sẽ không tải được.

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

Các tính năng của PackageManager 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 được hiển thị cho người dùng một cách thích hợp.

Các tính năng sau đây dành riêng cho những ứng dụng có sự khác biệt về XR.

android.software.xr.api.openxr

Các ứng dụng nhắm đến nền tảng Android XR và được tạo bằng OpenXR hoặc Unity phải có tính năng này trong tệp kê khai ứng dụng với thuộc tính android:required được đặt thành true.

Những ứng dụng sử dụng Gói tiện ích Android XR cho Unity phiên bản 1.0.0 trở lên hoặc Unity OpenXR: Gói Android XR phiên bản 0.5.0-exp.1 trở lên không cần thêm phần tử này theo cách thủ công vào tệp kê khai ứng dụng. Hai gói này sẽ chèn phần tử này vào tệp kê khai ứng dụng cho bạn.

Các thiết bị có thể chỉ định một phiên bản cho tính năng này, cho biết phiên bản OpenXR cao nhất mà thiết bị hỗ trợ. Số 16 bit lớn hơn đại diện cho số chính và số 16 bit nhỏ hơn đại diện cho số phụ. Ví dụ: để chỉ định OpenXR phiên bản 1.1, giá trị sẽ được đặt thành "0x00010001".

Các ứng dụng có thể sử dụng phiên bản tính năng để cho biết phiên bản OpenXR tối thiểu mà ứng dụng yêu cầu. Ví dụ: nếu ứng dụng yêu cầu hỗ trợ OpenXR phiên bản 1.1, hãy khai báo tính năng sau:

<uses-feature android:name="android.software.xr.api.openxr"
    android:version="0x00010001"
    android:required="true" />

android.hardware.xr.input.controller

Tính năng này cho biết ứng dụng yêu cầu dữ liệu đầu vào từ một bộ điều khiển chuyển động 6DoF (bậc 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ợ bộ điều khiển và không hoạt động được nếu không có bộ điều khiển, hãy đặt giá trị thành true. Nếu ứng dụng của bạn hỗ trợ bộ điều khiển nhưng có thể hoạt động mà không cần bộ điều khiển, hãy đặt thành 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

Cờ này cho biết ứng dụng yêu cầu tính năng theo dõi bàn 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 người dùng. Nếu ứng dụng của bạn hỗ trợ tính năng theo dõi bàn tay và không hoạt động được 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 bàn tay nhưng có thể hoạt động mà không cần tính năng này, hãy đặt thành 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

Cờ này cho biết ứng dụng yêu cầu tính năng theo dõi ánh mắt có độ trung thực cao để 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 bằ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 bằ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 thành 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" />

Các bước tiếp theo

Giờ đây, bạn đã hoàn tất việc định cấu hình tệp kê khai của ứng dụng và xem xét thông tin quan trọng, hãy khám phá những cách bạn có thể tạo bằng OpenXR: