Обзор сборки для Android XR

Android XR — это расширение платформы и экосистемы Android. Android XR SDK предназначен для того, чтобы вы могли создавать приложения XR, используя знакомые платформы и инструменты Android или используя открытые стандарты, такие как OpenXR и WebXR. Все совместимые мобильные приложения или приложения с большим экраном будут доступны для установки на гарнитуры XR из Play Store. Ознакомьтесь с рекомендациями по совместимости, чтобы узнать, совместимо ли ваше приложение.

В этом руководстве описаны следующие области:

  • Выбор инструментов и технологий разработки
  • Разработка приложений для Android XR
  • Настройка файла манифеста вашего приложения
  • Рекомендации по совместимости манифеста приложения
  • Общие сведения о разрешениях для Android XR
  • Обеспечение качества приложения Android XR
  • Упаковка и распространение вашего приложения для Android XR

Выберите свои инструменты и технологии разработки

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

Джетпак XR SDK

Jetpack XR SDK содержит библиотеки Android XR Jetpack, созданные с учетом уникальных возможностей устройств XR. Начните с этого SDK, если хотите выполнить одно из следующих действий:

  • Оптимизация или улучшение существующего приложения для мобильных устройств или планшетов Android.
  • Создайте новое приложение Android XR с помощью Android Studio и Jetpack.

Если вы уже умеете разрабатывать приложения с помощью Android Jetpack, вам подойдет Jetpack XR SDK. Он предназначен для полной интеграции с этими платформами и библиотеками и позволяет использовать имеющиеся знания для создания захватывающих XR-приложений.

Узнайте больше о разработке с помощью Jetpack XR SDK .

Единство

Unity Engine — это механизм разработки 3D-изображений в реальном времени, который позволяет художникам, дизайнерам и разработчикам сотрудничать для создания захватывающих и интерактивных впечатлений. Поддержка Unity Android XR обеспечивает высокий уровень контроля над разрабатываемыми 3D-проектами, а также преимущества устоявшейся поддержки Unity OpenXR и экосистемы разработчиков.

Если у вас уже есть опыт XR, созданный с помощью Unity, или вы знакомы с разработкой Unity, начните с этого варианта.

Узнайте больше о разработке с помощью Unity для Android XR .

OpenXR

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

Узнайте больше о поддержке OpenXR для Android XR .

ВебXR

WebXR позволяет создавать захватывающие возможности для Интернета. Он обеспечивает доступ к устройствам VR и AR в совместимых веб-браузерах, таких как Chrome на Android XR.

Начните с этого варианта, если вы хотите создать интерфейс XR для Интернета или добавить возможности XR в веб-приложение. Существующие возможности WebXR также будут работать на Android XR.

Узнайте больше о создании веб-приложений с помощью WebXR .

Дизайн для XR

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

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

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

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

Свойство PROPERTY_ACTIVITY_XR_START_MODE

Свойство android:name="android.window.PROPERTY_ACTIVITY_XR_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_FULL_SPACE_UNMANAGED (только OpenXR)

XR_ACTIVITY_START_MODE_HOME_SPACE

(Только приложения, созданные с помощью Jetpack XR SDK)

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

(Только приложения, созданные с помощью Jetpack XR SDK)

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


<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

(Только приложения, созданные с использованием OpenXR)

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

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

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

Следующие функции относятся только к приложениям XR.

android.software.xr.immersive

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

Приложения, созданные с использованием OpenXR или Unity, должны иметь для этого значения значение true.

<uses-feature android:name="android.software.xr.immersive" android:required="true" />

android.hardware.xr.input.controller

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

<uses-feature android:name="android.hardware.xr.input.controller" android:required="true" />

android.hardware.xr.input.hand_tracking

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

<uses-feature android:name="android.hardware.xr.input.hand_tracking" android:required="true" />

android.hardware.xr.input.eye_tracking

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

<uses-feature android:name="android.hardware.xr.input.eye_tracking" android:required="true" />

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

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

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

Магазин 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

Общие сведения о разрешениях для XR

Как и в случае с приложениями на мобильных устройствах и других форм-факторах, некоторые функции, предлагаемые приложениями XR, могут потребовать от вашего приложения объявления разрешений в файле AndroidManifest вашего приложения. В случае опасных разрешений вашему приложению может потребоваться запросить разрешения во время выполнения . Прочтите «Разрешения на Android» и рекомендации по разрешениям для получения более подробной информации.

Разрешения для функций XR

Следующие разрешения могут использоваться приложениями XR. Все разрешения в этом разделе считаются опасными разрешениями, поэтому вы должны объявить их в манифесте приложения и запросить их во время выполнения.

android.permission.EYE_TRACKING

Варианты использования, требующие этого разрешения

Представление позы и ориентации глаз пользователя для аватаров.

Функции Jetpack XR SDK, для которых требуется это разрешение

н/д

Расширения OpenXR, которым требуется это разрешение

XR_ANDROID_avatar_eyes

Функции Unity, для которых требуется это разрешение

Android XR: AR Face

android.permission.EYE_TRACKING_FINE

Варианты использования, требующие этого разрешения

Ввод взгляда и взаимодействие

Функции Jetpack XR SDK, для которых требуется это разрешение

н/д

Расширения OpenXR, которым требуется это разрешение

XR_EXT_eye_gaze_interaction

Функции Unity, для которых требуется это разрешение

Eye Gaze Interaction

android.permission.FACE_TRACKING

Варианты использования, требующие этого разрешения

Отслеживание и рендеринг выражений лица

Функции Jetpack XR SDK, для которых требуется это разрешение

н/д

Расширения OpenXR, которым требуется это разрешение

XR_ANDROID_face_tracking

Функции Unity, для которых требуется это разрешение

XRFaceTrackingFeature

android.permission.HAND_TRACKING

Варианты использования, требующие этого разрешения

Отслеживание положения суставов рук, угловых и линейных скоростей; Использование сетчатого представления рук пользователя

Функции Jetpack XR SDK, для которых требуется это разрешение

н/д

Расширения OpenXR, которым требуется это разрешение

XR_ANDROID_hand_mesh

XR_EXT_hand_tracking

Функции Unity, для которых требуется это разрешение

XR Hands

XRHandMeshFeature

android.permission.SCENE_UNDERSTANDING

Варианты использования, требующие этого разрешения

Оценка освещенности; проецирование сквозных отверстий на сетчатые поверхности; выполнение рейкастов для отслеживаемых объектов в среде; слежение за самолетом; отслеживание объектов; работа с глубиной для окклюзии и проверки попадания; постоянные якоря.

Функции Jetpack XR SDK, для которых требуется это разрешение

Отслеживание самолетов

Хит-тестирование

Постоянство привязки

Расширения OpenXR, которым требуется это разрешение

XR_ANDROID_anchor_persistence

XR_ANDROID_depth_texture

XR_ANDROID_light_estimation

XR_ANDROID_composition_layer_passthrough_mesh

XR_ANDROID_raycast

XR_ANDROID_trackables

XR_ANDROID_trackables_object

Функции Unity, для которых требуется это разрешение

XRAnchorFeature

XRDepthTextureFeature

XRLightEstimationFeature

XRPassthroughFeature

XRTrackableFeature

XRObjectTrackingFeature

Обеспечьте качество приложения Android XR

Чтобы ваше приложение было удобным для пользователей, ознакомьтесь с нашими рекомендациями по обеспечению качества приложений для Android XR .

Упаковывайте и распространяйте свое приложение для Android XR.

Android XR предлагает широкий выбор приложений и возможностей для гарнитур XR через Google Play. В руководстве по упаковке и распространению приложений для Android XR вы найдете информацию о начале работы с Play Store и Play Console, публикации треков, подготовке пакетов приложений для Android и ограничениях на размер приложений.