Обзор сборки для 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-изображений в реальном времени, который позволяет художникам, дизайнерам и разработчикам сотрудничать для создания захватывающих и интерактивных впечатлений. Поддержка Android XR в Unity дает вам высокий уровень контроля над разрабатываемыми вами 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-приложение или приложение с большим экраном может работать в 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 (устарело)

XR_ANDROID_eye_tracking (для грубого отслеживания)

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

Android XR: AR Face

android.permission.EYE_TRACKING_COARSE

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

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

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

н/д

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

XR_ANDROID_avatar_eyes (устарело)

XR_ANDROID_eye_tracking (для грубого отслеживания)

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

Android XR: AR Face

android.permission.EYE_TRACKING_FINE

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

Взгляд для выбора, ввода и взаимодействия

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

н/д

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

XR_EXT_eye_gaze_interaction

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

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

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

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

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

Функции 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.permission.SCENE_UNDERSTANDING_COARSE

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

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

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

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

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

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

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

XR_ANDROID_anchor_persistence

XR_ANDROID_light_estimation

XR_ANDROID_composition_layer_passthrough_mesh

XR_ANDROID_raycast

XR_ANDROID_trackables

XR_ANDROID_trackables_object

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

XRAnchorFeature

XRLightEstimationFeature

XRPassthroughFeature

XRTrackableFeature

XRObjectTrackingFeature

android.permission.SCENE_UNDERSTANDING_FINE

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

Текстура глубины

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

н/д

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

XR_ANDROID_depth_texture

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

XRDepthTextureFeature

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

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

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

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

,

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

XR_ANDROID_eye_tracking (для грубого отслеживания)

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

Android XR: AR Face

android.permission.EYE_TRACKING_COARSE

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

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

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

н/д

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

XR_ANDROID_avatar_eyes (устарело)

XR_ANDROID_eye_tracking (для грубого отслеживания)

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

Android XR: AR Face

android.permission.EYE_TRACKING_FINE

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

Взгляд для выбора, ввода и взаимодействия

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

н/д

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

XR_EXT_eye_gaze_interaction

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

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

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

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

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

Функции 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.permission.SCENE_UNDERSTANDING_COARSE

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

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

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

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

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

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

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

XR_ANDROID_anchor_persistence

XR_ANDROID_light_estimation

XR_ANDROID_composition_layer_passthrough_mesh

XR_ANDROID_raycast

XR_ANDROID_trackables

XR_ANDROID_trackables_object

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

XRAnchorFeature

XRLightEstimationFeature

XRPassthroughFeature

XRTrackableFeature

XRObjectTrackingFeature

android.permission.SCENE_UNDERSTANDING_FINE

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

Текстура глубины

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

н/д

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

XR_ANDROID_depth_texture

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

XRDepthTextureFeature

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

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

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

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

,

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-изображений в реальном времени, который позволяет художникам, дизайнерам и разработчикам сотрудничать для создания захватывающих и интерактивных впечатлений. Поддержка Android XR в Unity дает вам высокий уровень контроля над разрабатываемыми вами 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 мобильного или большого экрана может работать в домашнем пространстве, а также приложения 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 MODE. Неуправляемые полные пространственные сигналы в 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

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

Приложения Manifest Companyations для мобильных и больших экранных приложений

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

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

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

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

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

android.permission.EYE_TRACKING

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

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

Функции JetPack XR SDK, которые требуют этого разрешения

н/д

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

XR_ANDROID_avatar_eyes (устарело)

XR_ANDROID_eye_tracking (для грубого отслеживания)

Особенности единства, которые требуют этого разрешения

Android XR: AR Face

android.permission.EYE_TRACKING_COARSE

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

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

Функции JetPack XR SDK, которые требуют этого разрешения

н/д

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

XR_ANDROID_avatar_eyes (устарело)

XR_ANDROID_eye_tracking (для грубого отслеживания)

Особенности единства, которые требуют этого разрешения

Android XR: AR Face

android.permission.EYE_TRACKING_FINE

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

Глаза при выборе, вводе и взаимодействии

Функции JetPack XR SDK, которые требуют этого разрешения

н/д

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

XR_EXT_eye_gaze_interaction

Особенности единства, которые требуют этого разрешения

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

android.permission.FACE_TRACKING

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

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

Функции JetPack XR SDK, которые требуют этого разрешения

н/д

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

XR_ANDROID_face_tracking

Особенности единства, которые требуют этого разрешения

XRFaceTrackingFeature

android.permission.HAND_TRACKING

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

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

Функции JetPack XR SDK, которые требуют этого разрешения

Государство рук и совместные позы

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

XR_ANDROID_hand_mesh

XR_EXT_hand_tracking

Особенности единства, которые требуют этого разрешения

XR Hands

XRHandMeshFeature

android.permission.SCENE_UNDERSTANDING

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

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

Функции 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

Особенности единства, которые требуют этого разрешения

XRAnchorFeature

XRDepthTextureFeature

XRLightEstimationFeature

XRPassthroughFeature

XRTrackableFeature

XRObjectTrackingFeature

android.permission.SCENE_UNDERSTANDING_COARSE

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

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

Функции JetPack XR SDK, которые требуют этого разрешения

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

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

Якоря устойчивость

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

XR_ANDROID_anchor_persistence

XR_ANDROID_light_estimation

XR_ANDROID_composition_layer_passthrough_mesh

XR_ANDROID_raycast

XR_ANDROID_trackables

XR_ANDROID_trackables_object

Особенности единства, которые требуют этого разрешения

XRAnchorFeature

XRLightEstimationFeature

XRPassthroughFeature

XRTrackableFeature

XRObjectTrackingFeature

android.permission.SCENE_UNDERSTANDING_FINE

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

Глубина текстура

Функции JetPack XR SDK, которые требуют этого разрешения

н/д

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

XR_ANDROID_depth_texture

Особенности единства, которые требуют этого разрешения

XRDepthTextureFeature

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

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

Пакет и распространите приложение для Android XR

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

,

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

Это руководство объясняет следующие области:

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

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

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

JetPack XR SDK

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

  • Оптимизировать или улучшить существующее приложение для Android Mobile или планшет
  • Создайте новое приложение Android XR с помощью Android Studio и JetPack

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

Узнайте больше о разработке с JetPack XR SDK .

Единство

Enty Engine -это 3D-двигатель разработки в реальном времени, который позволяет художникам, дизайнерам и разработчикам сотрудничать для создания иммерсивного и интерактивного опыта. Поддержка Android XR от Unity дает вам высокий уровень контроля над 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 .

Webxr

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

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

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

Дизайн для XR

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

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

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

Для приложений, дифференцированных 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)

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

(Приложения, построенные только с 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 MODE. Неуправляемые полные пространственные сигналы в 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

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

Приложения Manifest Companyations для мобильных и больших экранных приложений

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

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

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

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

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

android.permission.EYE_TRACKING

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

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

Функции JetPack XR SDK, которые требуют этого разрешения

н/д

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

XR_ANDROID_avatar_eyes (устарело)

XR_ANDROID_eye_tracking (для грубого отслеживания)

Особенности единства, которые требуют этого разрешения

Android XR: AR Face

android.permission.EYE_TRACKING_COARSE

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

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

Функции JetPack XR SDK, которые требуют этого разрешения

н/д

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

XR_ANDROID_avatar_eyes (устарело)

XR_ANDROID_eye_tracking (для грубого отслеживания)

Особенности единства, которые требуют этого разрешения

Android XR: AR Face

android.permission.EYE_TRACKING_FINE

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

Глаза при выборе, вводе и взаимодействии

Функции JetPack XR SDK, которые требуют этого разрешения

н/д

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

XR_EXT_eye_gaze_interaction

Особенности единства, которые требуют этого разрешения

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

android.permission.FACE_TRACKING

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

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

Функции JetPack XR SDK, которые требуют этого разрешения

н/д

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

XR_ANDROID_face_tracking

Особенности единства, которые требуют этого разрешения

XRFaceTrackingFeature

android.permission.HAND_TRACKING

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

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

Функции JetPack XR SDK, которые требуют этого разрешения

Государство рук и совместные позы

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

XR_ANDROID_hand_mesh

XR_EXT_hand_tracking

Особенности единства, которые требуют этого разрешения

XR Hands

XRHandMeshFeature

android.permission.SCENE_UNDERSTANDING

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

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

Функции 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

Особенности единства, которые требуют этого разрешения

XRAnchorFeature

XRDepthTextureFeature

XRLightEstimationFeature

XRPassthroughFeature

XRTrackableFeature

XRObjectTrackingFeature

android.permission.SCENE_UNDERSTANDING_COARSE

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

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

Функции JetPack XR SDK, которые требуют этого разрешения

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

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

Якоря устойчивость

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

XR_ANDROID_anchor_persistence

XR_ANDROID_light_estimation

XR_ANDROID_composition_layer_passthrough_mesh

XR_ANDROID_raycast

XR_ANDROID_trackables

XR_ANDROID_trackables_object

Особенности единства, которые требуют этого разрешения

XRAnchorFeature

XRLightEstimationFeature

XRPassthroughFeature

XRTrackableFeature

XRObjectTrackingFeature

android.permission.SCENE_UNDERSTANDING_FINE

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

Глубина текстура

Функции JetPack XR SDK, которые требуют этого разрешения

н/д

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

XR_ANDROID_depth_texture

Особенности единства, которые требуют этого разрешения

XRDepthTextureFeature

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

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

Пакет и распространите приложение для Android XR

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