Начните создавать захватывающие впечатления

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

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

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

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

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


<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 Store вы можете указать требуемые аппаратные или программные функции в манифесте приложения. Элемент uses-feature позволяет Play Store соответствующим образом фильтровать приложения, показываемые пользователям.

Следующие функции характерны для приложений, дифференцированных по 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

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

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

Как описано в разделе «Функции 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

Ближняя бесконтактная связь

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

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

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