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>
<использует-родную-библиотеку> OpenXR
(Только приложения, созданные с использованием OpenXR)
Приложения OpenXR должны декларировать использование собственной библиотеки OpenXR для успешной загрузки среды выполнения. Без этого объявления среда выполнения не сможет загрузиться.
<manifest ... >
<application ... >
<uses-native-library android:name="libopenxr.google.so" android:required="true" />
<activity
android:name="com.example.myapp.MainActivity" ... >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Функции PackageManager для приложений XR
Когда вы распространяете приложения через Google Play Store , вы можете указать необходимые аппаратные или программные функции в манифесте приложения. Элемент uses-feature
позволяет Play Store соответствующим образом фильтровать приложения, показываемые пользователям.
Следующие функции относятся только к приложениям, дифференцированным с помощью XR.
android.software.xr.api.spatial
Приложения, созданные с использованием Jetpack XR SDK, должны включать эту функцию в манифест приложения. Значение, которое вы задаете для атрибута android:required
зависит от версии выпуска вашего приложения.
Если ваше приложение объединяет функции или контент, дифференцированные с помощью XR, в существующий мобильный APK и публикуется в версии для мобильных устройств, вам следует установить для атрибута android:required
значение false
. Если ваше приложение создано специально для устройств с поддержкой XR и опубликовано в специальной версии Android XR, вам следует установить для атрибута android:required
значение true
.
<uses-feature android:name="android.software.xr.api.spatial" android:required="true" />
android.software.xr.api.openxr
Приложения, предназначенные для платформы Android XR и созданные с использованием OpenXR или Unity, должны включать эту функцию в манифест приложения с атрибутом android:required
установленным в true
.
Приложениям, использующим пакет расширений Android XR для Unity версии 1.0.0 или выше или Unity OpenXR: пакет Android XR версии 0.5.0-exp.1 или выше, не нужно добавлять этот элемент вручную в манифест приложения. Эти два пакета добавят этот элемент в манифест приложения.
Устройства могут указать версию этой функции, которая указывает самую высокую версию OpenXR, поддерживаемую устройством. Старшие 16 бит представляют собой старшее число, а младшие 16 бит представляют собой младшее число. Например, чтобы указать OpenXR версии 1.1, необходимо установить значение «0x00010001».
Приложения могут использовать версию функции, чтобы указать минимальную версию OpenXR, необходимую приложению. Например, если вашему приложению требуется поддержка OpenXR версии 1.1, объявите следующую функцию:
<uses-feature android:name="android.software.xr.api.openxr"
android:version="0x00010001"
android:required="true" />
android.hardware.xr.input.controller
Эта функция указывает на то, что для правильной работы приложению требуется ввод данных от высокоточного контроллера движения с 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.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.level.full
Возможности подключения
android.hardware.ipsec_tunnel_migration
Конфигурация устройства
Конфигурация форм-фактора
android.hardware.type.automotive
android.hardware.type.embedded
android.hardware.type.television
android.software.leanback_only
Вход
android.software.input_methods
Расположение
Ближняя бесконтактная связь
Конфигурация безопасности и оборудование
android.hardware.se.omapi.uicc
android.hardware.biometrics.face
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.relative_humidity
android.hardware.sensor.stepcounter
android.hardware.sensor.stepdetector
Конфигурация программного обеспечения
android.software.connectionservice
android.software.expanded_picture_in_picture
android.software.live_wallpaper
android.software.picture_in_picture
android.software.wallet_location_based_suggestions
Телефония
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.hardware.vr.headtracking
android.hardware.vr.high_performance
Виджеты
Общие сведения о разрешениях для XR
Как и в случае с приложениями на мобильных устройствах и в других форм-факторах, некоторые возможности, предлагаемые приложениями XR, могут потребовать от вашего приложения объявления разрешений в файле AndroidManifest вашего приложения. В случае опасных разрешений вашему приложению может потребоваться запросить разрешения во время выполнения . Прочтите «Разрешения на Android» и рекомендации по разрешениям для получения более подробной информации.
Следующие разрешения могут использоваться приложениями XR. Все разрешения в этом разделе считаются опасными разрешениями, поэтому вы должны объявить их в манифесте приложения и запросить их во время выполнения.
android.permission.EYE_TRACKING_COARSE
Представление позы, статуса и ориентации глаз пользователя, например, для использования с аватарами. Используйте это разрешение, когда необходимы данные отслеживания глаз низкой точности.
н/д
android.permission.EYE_TRACKING_FINE
Взгляд для выбора, ввода и взаимодействия.
н/д
android.permission.FACE_TRACKING
Отслеживание и рендеринг выражений лица.
н/д
android.permission.HAND_TRACKING
Отслеживание положения суставов рук, угловых и линейных скоростей; Использование сетчатого представления рук пользователя.
android.permission.SCENE_UNDERSTANDING_COARSE
Оценка освещенности; проецирование сквозных отверстий на сетчатые поверхности; выполнение raycasts для отслеживаемых объектов в окружающей среде; слежение за самолетом; отслеживание объектов; постоянные якоря.
android.permission.SCENE_UNDERSTANDING_FINE
Глубина текстуры.
н/д
Обеспечьте качество приложения Android XR
Чтобы ваше приложение было удобным для пользователей, ознакомьтесь с нашими рекомендациями по обеспечению качества приложений для Android XR .
Упаковывайте и распространяйте свое приложение для Android XR.
Android XR предлагает широкий выбор приложений и возможностей для гарнитур XR через Google Play. В руководстве по упаковке и распространению приложений для Android XR вы найдете информацию о начале работы с Play Store и Play Console, публикации треков, подготовке пакетов приложений для Android и ограничениях на размер приложений.