Geospatial API 会结合使用 VPS 和 GPS 数据来生成高精度地理空间姿势。此 API 可在设备能够确定其位置的任何位置使用:
- 在 GPS 精度较低的区域(例如室内空间和密集的城市环境)中,该 API 将依赖于 VPS 覆盖范围来生成高精度姿势。
- 在没有或几乎没有头顶遮挡物的室外环境中,Geospatial API 或许能够使用可用的 GPS 位置数据生成高精度的地理空间姿势。
您可以在 AR 会话开始之前确定给定水平位置的 VPS 可用性,并据此打造更具体、更个性化的体验,例如,仅在 VPS 可用时显示“进入 AR”按钮。
启用 ARCore API
您的应用必须启用 ARCore API 才能检查 VPS 是否可用。
检查应用中的 VPS 可用性
Geospatial API 可在设备能够确定其位置的任何位置使用。如果您的 AR 体验取决于 VPS 覆盖率,您可以使用 AREarthManager.CheckVpsAvailabilityAsync()
获取 VpsAvailabilityPromise
,这是一个用于检查给定水平位置的 VPS 可用性的异步任务。
获取 VpsAvailabilityPromise
后,您可以通过轮询来获取其结果。
轮询结果
使用 VpsAvailabilityPromise.State
获取 InterruptiblePromise
的状态。有三种不同的状态:
Pending
:操作尚未完成,因此无法得知结果。Cancelled
:操作已被VpsAvailabilityPromise.Cancel()
取消。系统绝不会调用任何已注册的回调。Done
:操作已完成。使用VpsAvailabilityPromise.Result
获取结果。
您可以继续查看 VpsAvailabilityPromise.State
,直到任务完成。
取消 InterruptiblePromise
使用 VpsAvailabilityPromise.Cancel()
尝试取消 InterruptiblePromise
。由于线程并行性,您的取消尝试可能实际上并未成功。
在没有 VPS 覆盖的情况下使用 Geospatial API
Geospatial API 还可在未覆盖 VPS 的区域使用。在头顶上方没有或几乎没有遮挡物的室外环境中,GPS 可能就足以生成高精度的姿势。
后续步骤
- 获取设备相机的地理空间姿态,以确定用户设备在现实世界中的确切位置。