适用于 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 平台 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_javapersistent_cloud_anchor_java 示例应用来演示云锚点功能。请按照以下步骤在 Android Studio 中打开应用。

持久云锚点

  1. 在 Android Studio 中,点击 Open

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

云锚点

  1. 在 Android Studio 中,点击 Open

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

设置云锚点 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 Cloud 上使用 ARCore API 中的步骤操作,针对持久性云锚点使用无密钥授权,或针对云锚点使用 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 对象。

后续步骤