安装并配置 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" 属性可让系统知道,当 activity 启动时,应以特定模式启动该 activity。
此属性具有以下值:
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
使用此启动模式可在主共享空间中启动应用。在主共享空间中,多个应用可以并排运行,以便用户同时处理多个任务。任何移动或大屏 Android 应用都可以在主共享空间中运行,使用 Jetpack XR SDK 构建的 XR 应用也可以。
<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
使用此启动模式可在全沉浸空间中启动应用。在全沉浸空间中,一次只运行一个应用,且没有空间边界,所有其他应用都会隐藏。
<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>
适用于 XR 应用的 PackageManager 功能
当您通过 Google Play 商店分发应用时,可以在应用清单中指定所需的硬件或软件功能。借助 uses-feature 元素,Play 商店可以适当过滤向用户显示的应用。
以下功能是 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
此功能指明应用需要来自高精度 6DoF(自由度)运动控制器的输入才能正常运行。如果您的应用支持控制器,但没有控制器便无法正常运行,请将该值设置为 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" />
移动应用和大屏应用的应用清单兼容性注意事项
如 XR 应用的 PackageManager 功能部分中所述,应用通过在应用清单的 <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
微件
后续步骤
现在,您已完成应用清单的配置并查看了重要信息,接下来可以探索如何打造沉浸式体验:
- 使用 XR 将 Android 应用带入 3D 世界
- 使用 Jetpack Compose for XR 开发空间界面
- 为空间界面实现 Material Design
- 向应用添加空间环境
- 创建、控制和管理实体