适用于 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. 点按 RESOLVE ,然后输入之前返回的房间代码,以访问此房间中托管的锚点。这会向 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. 点按 RESOLVE ,然后输入之前返回的房间代码,以访问此房间中托管的锚点。这会向 ARCore API 发送解析请求,该请求会返回房间中当前托管的所有锚点的 ID。cloud_anchor_java 将使用这些 ID 来呈现附加到托管锚点的 3D 对象。

后续步骤