Начните создавать интерактивные ресурсы

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

После того ��ак вы установите и настроите Android Studio, создадите проект и настроите Jetpack XR SDK, вы сможете начать создавать иммерсивные возможности для таких устройств, как XR-шлемы и проводные XR-очки.

Прежде чем начать изучать все способы создания приложений, ознакомьтесь с информацией и выполните все задачи в следующих разделах, чтобы убедиться, что ваше приложение настроено для разработки иммерсивной 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_HOME_SPACE (только Jetpack XR SDK)
  • XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED (только Jetpack XR SDK)

XR_ACTIVITY_START_MODE_HOME_SPACE

Используйте этот режим, чтобы запустить приложение в главном пространстве. В главном пространстве можно запускать несколько приложений одновременно. В главном пространстве могут работать любые приложения для 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

Используйте этот режим, чтобы запустить приложение в полном пространстве. В полном пространстве одновременно работает только одно приложение, у которого нет границ, а все остальные приложения скрыты.


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

Свойство 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>

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

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

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

android.software.xr.api.spatial

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

Если ваше приложение содержит функции или контент для XR в существующем APK-файле для мобильных устройств и опубликовано через тип версии для мобильных устройств, задайте для атрибута android:required значение false:

<!-- If you are publishing an existing mobile APK using the mobile release track, set android:required to false.-->
<uses-feature android:name="android.software.xr.api.spatial" android:required="false" />

Если ваше приложение создано специально для устройств с поддержкой XR и опубликовано через отдельный тип версии для Android XR, задайте для атрибута android:required значение true:

<!-- If you are publishing a separate APK for XR using the dedicated Android XR release track, set android:required to true.-->
<uses-feature android:name="android.software.xr.api.spatial" android:required="true" />

android.hardware.xr.input.controller

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

android.hardware.xr.input.face_tracking

Этот флаг указывает, что для корректной работы приложения требуется оборудование для отслеживания лица. Если ваше приложение поддерживает отслеживание лиц и не может работать без него, задайте значение true. Если приложение поддерживает отслеживание лица, но может работать и без него, задайте значение false.

<!-- Sets android:required to true, indicating that your app can't function on devices without face tracking. -->
<uses-feature android:name="android.hardware.xr.input.face_tracking" android:required="true" />

Особенности совместимости манифеста приложения для мобильных устройств и устройств с большим экраном

Как описано в разделе Функции PackageManager для приложений XR, приложения заявляют, что они используют функцию, объявляя ее в элементе <uses-feature> в манифесте приложения. Некоторые функции, например телефония или GPS, могут быть совместимы не со всеми устройствами.

Чтобы получить список функций, включенных для устройства, выполните команду adb shell pm list features.

Неподдерживаемые функции

Google Play фильтрует приложения, доступные для установки на устройстве, используя следующие объявления функций 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

Связь малого радиуса действия (NFC)

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

Виртуальная реальность (устаревшая версия)

android.hardware.vr.headtracking

android.hardware.vr.high_performance

android.software.vr.mode

Виджеты

android.software.app_widgets

Дальнейшие действия

Вы настроили манифест приложения и ознакомились с важной информацией. Теперь узнайте, как создавать иммерсивные возможности.