После установки и настройки Android Studio , создания проекта и настройки Jetpack XR SDK вы готовы приступить к созданию захватывающих приложений.
Прежде чем приступить к изучению всех способов создания , ознакомьтесь с информацией и выполните все задачи в следующих разделах, чтобы убедиться, что ваше приложение настроено для разработки иммерсивной XR.
Настройте файл манифеста вашего приложения
Как и в случае с другими проектами приложений для Android, ваше приложение для Android XR должно иметь файл AndroidManifest.xml с определёнными настройками манифеста. Этот файл манифеста описывает важную информацию о вашем приложении для инструментов сборки Android, операционной системы Android и Google Play. Подробнее см. в руководстве по обзору манифеста приложения .
Для дифференцированных приложений XR ваш файл манифеста должен содержать следующие элементы и атрибуты:
свойство PROPERTY_XR_ACTIVITY_START_MODE
Свойство android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE" сообщает системе, что при запуске действия оно должно запускаться в определенном режиме.
Это свойство имеет следующие значения:
-
XR_ACTIVITY_START_MODE_HOME_SPACE(только Jetpack XR SDK) -
XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED(только Jetpack XR SDK)
XR_ACTIVITY_START_MODE_HOME_SPACE
Используйте этот режим запуска для запуска вашего приложения в Home Space. В Home Space несколько приложений могут работать одновременно, что позволяет пользователям выполнять несколько задач одновременно. В Home Space могут работать любые мобильные или широкоэкранные приложения Android, а также приложения XR, созданные с использованием Jetpack XR SDK.
<manifest ... >
<application ... >
<property
android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE"
android:value="XR_ACTIVITY_START_MODE_HOME_SPACE" />
<activity
android:name="com.example.myapp.MainActivity" ... >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED
Используйте этот режим запуска для запуска приложения в режиме Full Space. В режиме Full Space одновременно работает только одно приложение, без ограничений по пространству, а все остальные приложения скрыты.
<manifest ... >
<application ... >
<property
android:name="android.window.PROPERTY_XR_ACTIVITY_START_MODE"
android:value="XR_ACTIVITY_START_MODE_FULL_SPACE_MANAGED" />
<activity
android:name="com.example.myapp.MainActivity" ... >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
недвижимость PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED
Свойство android:name="android.window.PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED" указывает, что приложение должно запускаться с определённым типом границы. Если ваше приложение предназначено для перемещения пользователей по своему физическому пространству, необходимо указать свойство XR_BOUNDARY_TYPE_LARGE Указание свойства XR_BOUNDARY_TYPE_NO_RECOMMENDATION не даёт рекомендаций по типу границы безопасности, поэтому система использует уже используемый тип.
<manifest ... >
<application ... >
<property
android:name="android.window.PROPERTY_XR_BOUNDARY_TYPE_RECOMMENDED"
android:value="XR_BOUNDARY_TYPE_LARGE" />
</application>
</manifest>
Функции PackageManager для приложений XR
При распространении приложений через Google Play Store вы можете указать требуемые аппаратные или программные функции в манифесте приложения. Элемент uses-feature позволяет Play Store соответствующим образом фильтровать приложения, показываемые пользователям.
Следующие функции характерны для приложений, дифференцированных по XR.
android.software.xr.api.spatial
Приложения, созданные с использованием Jetpack XR SDK, должны включать эту функцию в манифест приложения. Значение атрибута android:required зависит от версии вашего приложения.
Если ваше приложение объединяет функции или контент, дифференцированные XR, в существующий мобильный APK и публикуется в версии для мобильных устройств, установите для атрибута android:required значение false :
<!-- If you are publishing an existing mobile APK using the mobile release track, set android:required to false.-->
<uses-feature android:name="android.software.xr.api.spatial" android:required="false" />
Если ваше приложение создано специально для устройств с поддержкой XR и опубликовано в специальной версии Android XR, то установите для атрибута android:required значение true :
<!-- If you are publishing a separate APK for XR using the dedicated Android XR release track, set android:required to true.-->
<uses-feature android:name="android.software.xr.api.spatial" android:required="true" />
android.hardware.xr.input.controller
Эта функция указывает, что для корректной работы приложению требуются входные данные от высокоточного контроллера движения с шестью степенями свободы (DoF). Если ваше приложение поддерживает контроллеры и не может работать без них, установите значение true . Если ваше приложение поддерживает контроллеры, но может работать без них, установите значение false .
<!-- Sets android:required to true, indicating that your app can't function on devices without controllers. -->
<uses-feature android:name="android.hardware.xr.input.controller" android:required="true" />
android.hardware.xr.input.hand_tracking
Этот флаг указывает, что для корректной работы приложения требуется высокоточное отслеживание движений рук, включая положение, ориентацию и скорость движения суставов руки пользователя. Если ваше приложение поддерживает отслеживание движений рук и не может работать без него, установите значение true . Если ваше приложение поддерживает отслеживание движений рук, но может работать без него, установите значение false .
<!-- Sets android:required to true, indicating that your app can't function on devices without hand tracking. -->
<uses-feature android:name="android.hardware.xr.input.hand_tracking" android:required="true" />
android.hardware.xr.input.eye_tracking
Этот флаг указывает, что приложению требуется высокоточное отслеживание движения глаз для корректной работы ввода. Если ваше приложение поддерживает отслеживание движения глаз для ввода и не может работать без него, установите значение true . Если ваше приложение поддерживает отслеживание движения глаз для ввода, но может работать без него, установите значение false .
<!-- Sets android:required to true, indicating that your app can't function on devices without eye tracking. -->
<uses-feature android:name="android.hardware.xr.input.eye_tracking" android:required="true" />
Вопросы совместимости манифеста приложения для мобильных приложений и приложений с большими экранами
Как описано в разделе «Функции PackageManager для приложений XR» , приложения заявляют об использовании той или иной функции, указывая её в элементе <uses-feature> манифеста приложения. Некоторые функции, такие как телефония или GPS, могут быть совместимы не со всеми устройствами.
Чтобы получить список функций, которые включены для устройства, выполните adb shell pm list features .
Неподдерживаемые функции
Магазин Google Play фильтрует приложения, доступные для установки на устройство, используя следующие декларации функций Android.
Аппаратное обеспечение камеры
android.hardware.camera.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
Виджеты
Следующие шаги
Теперь, когда вы закончили настройку манифеста своего приложения и просмотрели важную информацию, изучите способы создания захватывающих впечатлений:
- Перенесите свое Android-приложение в 3D с помощью XR
- Разработка пространственного пользовательского интерфейса с помощью Jetpack Compose для XR
- Реализуйте Material Design для вашего пространственного пользовательского интерфейса
- Добавьте пространственные среды в свое приложение
- Создание, контроль и управление сущностями