为以 Android 为目标平台的 Unity (AR Foundation) 应用启用 Geospatial API

配置应用设置,以使用 Geospatial API

前提条件

确保您了解基本 AR 概念以及如何配置 ARCore 会话,然后再继续。

如需详细了解 Geospatial API,请参阅 Geospatial API 简介

如果您是第一次使用 ARCore 进行开发,请参阅使用入门,了解软件和硬件要求、前提条件以及您使用的平台特有的其他信息。

如需使用 ARCore Geospatial API,您的项目必须支持 AR FoundationARCore Extensions for AR Foundation

启用 ARCore API

在您的应用中使用视觉定位系统 (VPS) 之前,您必须先在新的或现有的 Google Cloud 项目中启用 ARCore API。此服务负责托管、存储和解析地理空间锚点。

最好使用无密钥授权,但也支持 API 密钥授权。

将所需的库添加到您的应用

在授权您的应用调用 ARCore API 之后,您必须添加库才能在应用中启用地理空间功能。

  1. 依次转到 Edit > Project Settings > XR plug-In Management > ARCore Extensions
  2. 可选地图项下,选择地理空间

在会话配置中启用地理空间功能

在您的应用中启用地理空间功能之后,在应用的 AR 会话配置中启用地理空间功能,以便与 ARCore API 通信:

  1. 确保项目的 Assets 文件夹中包含 ARCoreExtensionsConfig 可脚本化对象。要创建一个 ARCore 扩展配置,请右键点击 Assets 窗格中的该图标,然后依次选择 Create > XR > ARCore Extensions Config
  2. Assets 文件夹中选择 ARCoreExtensionsConfig 可脚本化对象,并将 Geospatial Mode 设置为 Enabled

  3. ARCore Extensions 游戏对象配置为使用 ARCoreExtensionsConfig 配置。在 Hierarchy 窗格中,找到您在最初设置 ARCore Extensions 时创建的 ARCore Extensions 游戏对象,并将 ARCore Extensions Config 字段连接到 Assets 文件夹中的 ARCoreExtensionsConfig 可脚本化对象。

提示用户允许使用设备数据

使用 ARCore Geospatial API 的应用必须向用户显示提示,以确认并允许使用其设备中的数据。如需了解详情,请参阅用户隐私要求

检查设备兼容性

并非所有支持 ARCore 的设备也支持 Geospatial API。如需检查用户设备的兼容性,请调用 AREarthManager.IsGeospatialModeSupported()。如果返回 FeatureSupported.Unsupported,请勿尝试配置会话。

在运行时请求用户授予位置信息权限

ARCoreExtensions.Update() 中启用地理空间模式后,ARCore Extensions 会自动请求适当的位置权限。如果用户未授予确切位置权限,会话将无法恢复,并且系统会生成“未授予权限”错误。这是一个终止错误,需要重新启动才能再次触发权限请求。

检查设备当前位置的地理空间可用性

由于 Geospatial API 结合使用 VPS 和 GPS 来确定地理空间姿势,因此只要设备能够确定其位置,就可以使用该 API。在 GPS 准确度较低的区域,例如室内空间和人口密集的城市环境中,该 API 将依靠 VPS 的覆盖范围来生成高准确度的姿势。在典型条件下,VPS 可提供约 5 米的位置精确度和 5 度的旋转精度。使用 AREarthManager.CheckVpsAvailability() 确定指定位置是否具有 VPS 覆盖范围。

Geospatial API 也可以在没有 VPS 覆盖范围的区域使用。在没有上部障碍物或上部障碍物的户外环境中,GPS 可能足以生成非常准确的姿势。

后续步骤