不妨试用 云锚点在 cloud_anchor_java 和 persistent_cloud_anchor_java 示例应用中的托管和解析。
您应该使用哪个示例应用?
云锚点是指在 ARCore API 云端点上托管的 锚点。借助此 API,用户可以在同一应用中分享体验。持久云锚点 是指可以托管超过 24 小时的云锚点。
persistent_cloud_anchor_java是协作项目用例的实现。它使用无密钥授权来授权 ARCore API 调用。由于它不使用 Firebase 后端在设备之间共享云锚点 ID,因此更容易上手和运行。cloud_anchor_java是多人游戏用例的实现。它使用 API 密钥来授权 ARCore API 调用。
前提条件
要求
硬件
- 支持 ARCore 的设备,且安装了最新版“面向 AR 的 Google Play 服务”
- 一根用于将设备连接到开发机器的 USB 线
软件
- Android Studio 3.0 或更高版本,且 Android SDK 平台版本为 7.0(API 级别 24)或更高版本
- ARCore SDK for Android,您可以通过以下两种方式之一获取:
- 从 GitHub 下载并在您的机器上解压缩
- 使用以下命令克隆代码库:
git clone https://github.com/google-ar/arcore-android-sdk.git
在 Android Studio 中打开示例应用
ARCore SDK 提供了 cloud_anchor_java 和 persistent_cloud_anchor_java 示例应用来演示云锚点功能。请按照以下步骤在
Android Studio 中打开这些应用。
持久云锚点
在 Android Studio 中,点击 Open 。
找到 arcore-android-sdk 目录在您的机器上的存储位置。请勿打开整个 SDK 文件夹。而是前往 samples > persistent_cloud_anchor_java ,然后点击 Open 。
云锚点
在 Android Studio 中,点击 Open 。
找到 arcore-android-sdk 目录在您的机器上的存储位置。请勿打开整个 SDK 文件夹。而是前往 samples > cloud_anchor_java ,然后点击 Open 。
设置云锚点 ID 共享
云锚点 ID 是用于标识托管云锚点的字符串。它们用于解析或呈现附加到托管锚点的 3D 对象。
持久云锚点
云锚点 ID 共享在应用中本地维护。您无需在此处执行任何操作。
云锚点
cloud_anchor_java 示例应用使用 Firebase 的 Realtime Database 在设备之间共享云锚点 ID。您可以在自己的应用中使用其他解决方案。
- 手动将 Firebase 添加到您的应用。
cloud_anchor_java软件包名称为com.google.ar.core.examples.java.cloudanchor。您可以在main/AndroidManifest.xml中找到它。 - 下载您在将 Firebase 添加到应用时生成的
google-services.json文件。 - 使用 Firebase 创建 Realtime Database。
- 在 Android Studio 中,将
google-services.json文件添加到项目的app目录。
授权 ARCore API 调用
授权对 ARCore API 的调用,以便为您的 应用托管和解析云锚点。请按照在 Google Cloud 上使用 ARCore API 中的步骤操作,并对持久云锚点使用 无密钥 授权 ,或对 云锚点使用 API 密钥授权 。
构建和运行示例应用
持久云锚点
运行应用
- 确保您的设备已启用开发者选项和 USB 调试。
- 通过 USB 将设备连接到开发机器。
- 在 Android Studio 中,选择您的设备作为部署目标,然后点击 Run 。
persistent_cloud_anchor_java 应在您的设备上启动,并提示 ARCore 检测设备摄像头前方的平面。
如果 Google Cloud 授权失败,请参阅问题排查步骤。
放置锚点
- 应用开始检测平面后,点按屏幕以在检测到的某个平面上放置锚点。
- 点按 HOST 按钮以托管放置的锚点。这会向 ARCore API 发送主机请求,其中包含表示锚点相对于附近视觉特征的位置的数据。
成功的主机请求会在放置的位置建立锚点,并为其分配云锚点 ID。如果主机请求成功,应用应显示房间代码。您可以使用此代码在任何设备上访问此房间之前托管的锚点。
解析锚点
- 点按 RESOLVE ,然后输入之前返回的房间代码,以访问此房间中托管的锚点。这会向 ARCore API 发送解析请求,该请求会返回房间中当前托管的所有锚点的 ID。
persistent_cloud_anchor_java将使用这些 ID 来呈现附加到托管锚点的 3D 对象。
云锚点
运行应用
- 确保您的设备已启用开发者选项和 USB 调试。
- 通过 USB 将设备连接到开发机器。
- 在 Android Studio 中,选择您的设备作为部署目标,然后点击 Run 。
cloud_anchor_java 应在您的设备上启动,并提示 ARCore 检测设备摄像头前方的平面。
错误:com.google.firebase.database.DatabaseException: Failed to get FirebaseDatabase instance: Specify DatabaseURL within FirebaseApp or from your getInstance
如果您遇到此错误,请确保 google-services.json 中存在 firebase_url 属性。您可以通过确保已创建 Realtime Database 并下载 google-services.json 来获取此属性的正确值。
放置锚点
- 应用开始检测平面后,点按屏幕以在检测到的某个平面上放置锚点。
- 点按 HOST 按钮以托管放置的锚点。这会向 ARCore API 发送主机请求,其中包含表示锚点相对于附近视觉特征的位置的数据。
成功的主机请求会在放置的位置建立锚点,并为其分配云锚点 ID。如果主机请求成功,应用应显示房间代码。您可以使用此代码在任何设备上访问此房间之前托管的锚点。
解析锚点
- 点按 RESOLVE ,然后输入之前返回的房间代码,以访问此房间中托管的锚点。这会向 ARCore API 发送解析请求,该请求会返回房间中当前托管的所有锚点的 ID。
cloud_anchor_java将使用这些 ID 来呈现附加到托管锚点的 3D 对象。
后续步骤
- 使用 ARCore 云锚点和持久云锚点 Codelab 创建云锚点应用。
- 了解如何使用云锚点开发者指南将云锚点纳入您的应用。
- 使用 Cloud Anchors Management API 在 ARCore 应用之外管理云锚点。