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.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
Следующие разрешения могут использоваться приложениями XR. Все разрешения в этом разделе считаются опасными разрешениями, поэтому вы должны объявить их в манифесте приложения и запросить их во время выполнения.
-
android.permission.EYE_TRACKING
Варианты использования, требующие этого разрешения
Представление позы и ориентации глаз пользователя для аватаров.
Функции Jetpack XR SDK, для которых требуется это разрешение
н/д
Расширения OpenXR, которым требуется это разрешение
Функции Unity, для которых требуется это разрешение
Android XR: AR Face
-
android.permission.EYE_TRACKING_FINE
Варианты использования, требующие этого разрешения
Ввод взгляда и взаимодействие
Функции Jetpack XR SDK, для которых требуется это разрешение
н/д
Расширения OpenXR, которым требуется это разрешение
Функции Unity, для которых требуется это разрешение
-
android.permission.FACE_TRACKING
Варианты использования, требующие этого разрешения
Отслеживание и рендеринг выражений лица
Функции Jetpack XR SDK, для которых требуется это разрешение
н/д
Расширения OpenXR, которым требуется это разрешение
Функции Unity, для которых требуется это разрешение
-
android.permission.HAND_TRACKING
Варианты использования, требующие этого разрешения
Отслеживание положения суставов рук, угловых и линейных скоростей; Использование сетчатого представления рук пользователя
Функции Jetpack XR SDK, для которых требуется это разрешение
н/д
Расширения OpenXR, которым требуется это разрешение
Функции Unity, для которых требуется это разрешение
-
android.permission.SCENE_UNDERSTANDING
Варианты использования, требующие этого разрешения
Оценка освещенности; проецирование сквозных отверстий на сетчатые поверхности; выполнение рейкастов для отслеживаемых объектов в среде; слежение за самолетом; отслеживание объектов; работа с глубиной для окклюзии и проверки попадания; постоянные якоря.
Функции Jetpack XR SDK, для которых требуется это разрешение
Отслеживание самолетов
Хит-тестирование
Постоянство привязки
Расширения OpenXR, которым требуется это разрешение
Функции Unity, для которых требуется это разрешение
Обеспечьте качество приложения Android XR
Чтобы ваше приложение было удобным для пользователей, ознакомьтесь с нашими рекомендациями по обеспечению качества приложений для Android XR .
Упаковывайте и распространяйте свое приложение для Android XR.
Android XR предлагает широкий выбор приложений и возможностей для гарнитур XR через Google Play. В руководстве по упаковке и распространению приложений для Android XR вы найдете информацию о начале работы с Play Store и Play Console, публикации треков, подготовке пакетов приложений для Android и ограничениях на размер приложений.