Начните работу с OpenXR для Android XR

Применимые устройства XR
Это руководство поможет вам создать опыт использования этих типов XR-устройств.
Гарнитуры XR
Проводные очки XR

Прежде чем приступить к сборке с использованием поддерживаемых расширений OpenXR или поддерживаемого движка, ознакомьтесь с информацией и выполните все задачи в следующих разделах, чтобы убедиться, что ваше приложение настроено для разработки иммерсивной XR.

Настройте файл манифеста вашего приложения

Как и в случае с другими проектами приложений для Android, ваше приложение для Android XR должно иметь файл AndroidManifest.xml с определёнными настройками манифеста. Этот файл манифеста описывает важную информацию о вашем приложении для инструментов сборки Android, операционной системы Android и Google Play. Подробнее см. в руководстве по обзору манифеста приложения .

Для дифференцированных приложений XR ваш файл манифеста должен содержать следующие элементы и атрибуты:

свойство PROPERTY_XR_ACTIVITY_START_MODE

Свойство android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE" сообщает системе, что при запуске действия оно должно запускаться в определенном режиме.

Это свойство имеет следующие значения:

  • XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED (только OpenXR)

XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED

Приложения, созданные с помощью OpenXR, запускаются в режиме Full Space и должны использовать режим запуска XR_ACTIVITY_START_MODE_FULL_SPACE_UNMANAGED . Неуправляемый Full Space сигнализирует 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>

Свойство android:name="android.window.PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED" указывает, что приложение должно запускаться с определённым типом границы. Если ваше приложение предназначено для перемещения пользователей по своему физическому пространству, необходимо указать свойство XR_BOUNDARY_TYPE_LARGE Указание свойства XR_BOUNDARY_TYPE_NO_RECOMMENDATION не даёт рекомендаций по типу границы безопасности, поэтому система использует уже используемый тип.

<manifest ... >

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

<uses-native-library> OpenXR

Приложения OpenXR должны декларировать использование собственной библиотеки OpenXR для успешной загрузки своей среды выполнения. Без этого декларации среда выполнения не загрузится.

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

Функции PackageManager для приложений XR

При распространении приложений через Google Play Store вы можете указать требуемые аппаратные или программные функции в манифесте приложения. Элемент uses-feature позволяет Play Store соответствующим образом фильтровать приложения, показываемые пользователям.

Следующие функции характерны для приложений, дифференцированных по XR.

android.software.xr.api.openxr

Приложения, предназначенные для платформы Android XR и созданные с использованием OpenXR или Unity, должны включать эту функцию в манифест приложения, при этом атрибут android:required должен быть установлен в true .

Приложениям, использующим пакет Android XR Extensions Package для Unity версии 1.0.0 или выше или пакет Unity OpenXR: Android XR Package версии 0.5.0-exp.1 или выше, не нужно вручную добавлять этот элемент в манифест приложения. Эти два пакета автоматически добавят этот элемент в манифест приложения.

Устройства могут указывать версию этой функции, которая указывает на самую высокую версию OpenXR, поддерживаемую устройством. Старшие 16 бит представляют основной номер, а младшие 16 бит — дополнительный. Например, для указания версии OpenXR 1.1 значение будет равно "0x00010001" .

Приложения могут использовать версию функции для указания минимальной версии OpenXR, необходимой приложению. Например, если вашему приложению требуется поддержка OpenXR версии 1.1, укажите следующую функцию:

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

android.hardware.xr.input.controller

Эта функция указывает, что для корректной работы приложению требуются входные данные от высокоточного контроллера движения с шестью степенями свободы (DoF). Если ваше приложение поддерживает контроллеры и не может работать без них, установите значение true . Если ваше приложение поддерживает контроллеры, но может работать без них, установите значение 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

Этот флаг указывает, что для корректной работы приложения требуется высокоточное отслеживание движений рук, включая положение, ориентацию и скорость движения суставов руки пользователя. Если ваше приложение поддерживает отслеживание движений рук и не может работать без него, установите значение true . Если ваше приложение поддерживает отслеживание движений рук, но может работать без него, установите значение 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

Этот флаг указывает, что приложению требуется высокоточное отслеживание движения глаз для корректной работы ввода. Если ваше приложение поддерживает отслеживание движения глаз для ввода и не может работать без него, установите значение true . Если ваше приложение поддерживает отслеживание движения глаз для ввода, но может работать без него, установите значение 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" />

Следующие шаги

Теперь, когда вы завершили настройку манифеста своего приложения и просмотрели важную информацию, изучите способы, которые можно использовать для разработки с помощью OpenXR: