适用于 Android 的云锚点快速入门

尝试在 cloud_anchor_javapersistent_cloud_anchor_java 示例应用中托管和解析云锚点

您应使用哪个示例应用?

云锚点是指托管在 ARCore API 云端端点上的锚点。借助此 API,用户可以在同一应用中分享体验。永久性云锚点是指可以托管超过 24 小时的云锚点。

  • persistent_cloud_anchor_java 是协作项目用例的一种实现。它使用无密钥授权来授权 ARCore API 调用。由于它不使用 Firebase 后端在设备之间共享云锚点 ID,因此启动和运行起来要容易得多。
  • cloud_anchor_java 是多人游戏用例的实现。它使用 API 密钥来授权 ARCore API 调用。

前提条件

要求

硬件

软件

  • Android Studio 3.0 或更高版本,以及 Android SDK Platform 7.0(API 级别 24)或更高版本
  • ARCore SDK for Android,您可以通过以下两种方式之一获得: <ph type="x-smartling-placeholder">
      </ph>
    • GitHub 下载该文件并将其解压缩到您的机器上
    • 使用以下命令克隆代码库:
      git clone https://github.com/google-ar/arcore-android-sdk.git

在 Android Studio 中打开示例应用

ARCore SDK 提供了 cloud_anchor_javapersistent_cloud_anchor_java 示例应用来演示云锚点功能。请按照以下步骤在 Android Studio 中打开应用。

持久云锚点

  1. 在 Android Studio 中,点击 Open

  2. 前往计算机上 arcore-android-sdk 目录的存储位置。请勿打开整个 SDK 文件夹。请改为前往示例 >persistent_cloud_anchor_java,然后点击 Open

云锚点

  1. 在 Android Studio 中,点击 Open

  2. 前往计算机上 arcore-android-sdk 目录的存储位置。请勿打开整个 SDK 文件夹。请改为前往示例 >cloud_anchor_java 并点击打开

设置云锚点 ID 共享

云锚点 ID 是用于标识托管的云锚点的字符串。它们用于解析或渲染连接到托管锚点的 3D 对象。

持久云锚点

云锚点 ID 共享是在应用中本地维护的。您在此处无需执行任何操作。

云锚点

cloud_anchor_java 示例应用使用 Firebase 的 Realtime Database 在设备之间共享云锚点 ID。您可以在自己的应用中使用不同的解决方案。

  1. 手动将 Firebase 添加到您的应用cloud_anchor_java 软件包名称为 com.google.ar.core.examples.java.cloudanchor。您可以在 main/AndroidManifest.xml 中找到它。
  2. 下载将 Firebase 添加到应用时生成的 google-services.json 文件。
  3. 使用 Firebase 创建 Realtime Database。
  4. 在 Android Studio 中,将 google-services.json 文件添加到项目的 app 目录中。

授权 ARCore API 调用

授权调用 ARCore API 来托管和解析您的 应用。按照在 Google 上使用 ARCore API 一文中的步骤操作 Cloud无密钥模式 授权,或使用 API 密钥授权 云锚点。

构建和运行示例应用

持久云锚点

运行应用

  1. 确保您的设备已启用开发者选项和 USB 调试
  2. 通过 USB 将设备连接到开发机器。
  3. 在 Android Studio 中,选择您的设备作为部署目标,然后点击 Run

persistent_cloud_anchor_java 应该会在您的设备上启动,提示 ARCore 检测设备摄像头前方的平面。

如果 Google Cloud 授权失败,请参阅问题排查步骤

放置锚点

  1. 当应用开始检测平面后,点按屏幕即可在检测到的其中一个平面上放置锚点。
  2. 点按 HOST 按钮以托管已放置的锚点。这将向 ARCore API 发送一个托管请求,其中包含表示锚点相对于附近可视特征的位置的数据。

成功的托管请求将在所放置的位置创建一个锚点,并为其分配一个云锚点 ID。如果主机请求成功,应用应显示房间代码。您可以在任何设备上使用此代码访问此房间之前托管的锚点。

解析锚点

  1. 点按解析并输入之前返回的房间代码,即可访问此会议室中托管的锚点。这将向 ARCore API 发送一个解析请求,后者会返回房间中当前托管的所有锚点的 ID。persistent_cloud_anchor_java 将使用这些 ID 渲染连接到托管锚点的 3D 对象。

云锚点

运行应用

  1. 确保您的设备已启用开发者选项和 USB 调试
  2. 通过 USB 将设备连接到开发机器。
  3. 在 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


放置锚点

  1. 当应用开始检测平面后,点按屏幕即可在检测到的其中一个平面上放置锚点。
  2. 点按 HOST 按钮以托管已放置的锚点。这将向 ARCore API 发送一个托管请求,其中包含表示锚点相对于附近可视特征的位置的数据。

成功的托管请求将在所放置的位置创建一个锚点,并为其分配一个云锚点 ID。如果主机请求成功,应用应显示房间代码。您可以在任何设备上使用此代码访问此房间之前托管的锚点。

解析锚点

  1. 点按解析并输入之前返回的房间代码,即可访问此会议室中托管的锚点。这将向 ARCore API 发送一个解析请求,后者会返回房间中当前托管的所有锚点的 ID。cloud_anchor_java 将使用这些 ID 渲染连接到托管锚点的 3D 对象。

后续步骤