尝试在 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 调用。
前提条件
要求
硬件
- 一台安装了最新版面向 AR 的 Google Play 服务的支持 ARCore 的设备
- 一根用于将设备连接到开发机器的 USB 线
软件
- 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_java
和 persistent_cloud_anchor_java
示例应用来演示云锚点功能。请按照以下步骤在 Android Studio 中打开应用。
持久云锚点
在 Android Studio 中,点击 Open。
前往计算机上 arcore-android-sdk 目录的存储位置。请勿打开整个 SDK 文件夹。请改为前往示例 >persistent_cloud_anchor_java,然后点击 Open。
云锚点
在 Android Studio 中,点击 Open。
前往计算机上 arcore-android-sdk 目录的存储位置。请勿打开整个 SDK 文件夹。请改为前往示例 >cloud_anchor_java 并点击打开。
设置云锚点 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 上使用 ARCore API 一文中的步骤操作 Cloud 和无密钥模式 授权,或使用 API 密钥授权 云锚点。
构建和运行示例应用
持久云锚点
运行应用
- 确保您的设备已启用开发者选项和 USB 调试。
- 通过 USB 将设备连接到开发机器。
- 在 Android Studio 中,选择您的设备作为部署目标,然后点击 Run。
persistent_cloud_anchor_java
应该会在您的设备上启动,提示 ARCore 检测设备摄像头前方的平面。
如果 Google Cloud 授权失败,请参阅问题排查步骤。
放置锚点
- 当应用开始检测平面后,点按屏幕即可在检测到的其中一个平面上放置锚点。
- 点按 HOST 按钮以托管已放置的锚点。这将向 ARCore API 发送一个托管请求,其中包含表示锚点相对于附近可视特征的位置的数据。
成功的托管请求将在所放置的位置创建一个锚点,并为其分配一个云锚点 ID。如果主机请求成功,应用应显示房间代码。您可以在任何设备上使用此代码访问此房间之前托管的锚点。
解析锚点
- 点按解析并输入之前返回的房间代码,即可访问此会议室中托管的锚点。这将向 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。如果主机请求成功,应用应显示房间代码。您可以在任何设备上使用此代码访问此房间之前托管的锚点。
解析锚点
- 点按解析并输入之前返回的房间代码,即可访问此会议室中托管的锚点。这将向 ARCore API 发送一个解析请求,后者会返回房间中当前托管的所有锚点的 ID。
cloud_anchor_java
将使用这些 ID 渲染连接到托管锚点的 3D 对象。
后续步骤
- 使用“使用永久性云锚点的 ARCore 云锚点”Codelab 创建云锚点应用。
- 参阅云锚点开发者指南,了解如何在应用中集成云锚点。
- 使用 Cloud Anchors Management API 在您的 ARCore 应用之外管理云锚点。