嘗試在 cloud_anchor_java
和 persistent_cloud_anchor_java
範例應用程式中託管及解析 Cloud Anchors。
您應該使用哪一個範例應用程式?
雲端錨點是「錨點」,由 ARCore API 雲端端點代管。這個 API 可讓使用者在同一個應用程式中共用體驗。Persistent Cloud Anchor 是可託管超過 24 小時的雲端錨點。
persistent_cloud_anchor_java
是協作專案用途的實作。它採用無金鑰授權來授權 ARCore API 呼叫。這項工具不會透過 Firebase 後端在裝置間共用 Cloud Anchor ID,因此可讓你更輕鬆地上手。cloud_anchor_java
是多人遊戲用途的實作。並使用 API 金鑰授權 ARCore API 呼叫。
必備條件
需求條件
硬體
- 支援 ARCore 的裝置,且已安裝最新版本的 Google Play 服務 - AR 適用
- 可將裝置連接至開發機器的 USB 傳輸線
軟體
- 搭載 Android SDK Platform 7.0 (API 級別 24) 以上版本的 Android Studio 3.0 以上版本
- 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
範例應用程式,可示範 Cloud Anchors 功能。請按照下列步驟在 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」。
設定 Cloud Anchor ID 共用功能
Cloud Anchor ID 是可識別代管雲端錨點的字串。這些物件可用於解析或算繪代管錨點的 3D 物件。
永久雲端錨點
Cloud Anchor ID 共用功能會在應用程式中保留。在此情況中,您無須採取任何行動。
雲端錨點
cloud_anchor_java
範例應用程式會使用 Firebase 的即時資料庫,在不同裝置之間共用 Cloud Anchor ID。您可以在自己的應用程式中使用不同的解決方案。
- 手動將 Firebase 新增至您的應用程式。
cloud_anchor_java
套件名稱為com.google.ar.core.examples.java.cloudanchor
。你可以在main/AndroidManifest.xml
中找到該 ID。 - 下載您將 Firebase 新增至應用程式後產生的
google-services.json
檔案。 - 透過 Firebase 建立即時資料庫。
- 在 Android Studio 中,將
google-services.json
檔案新增至專案的app
目錄。
授權 ARCore API 呼叫
授權對 ARCore API 呼叫,為應用程式託管並解析 Cloud Anchor。請按照「在 Google Cloud 上使用 ARCore API」一節的步驟操作,針對永久 Cloud Anchors 或 API 金鑰授權,使用無金鑰授權。
建構並執行範例應用程式
永久雲端錨點
執行應用程式
- 確認裝置已啟用開發人員選項和 USB 偵錯。
- 透過 USB 連接裝置至開發機器。
- 在 Android Studio 中,選取您的裝置做為部署目標,然後按一下「Run」。
「persistent_cloud_anchor_java
」應在你的裝置上啟動,並提示 ARCore 偵測裝置相機前方的飛機。
如果 Google Cloud 授權失敗,請參閱疑難排解步驟。
放置錨定標記
- 應用程式開始偵測飛機後,請輕觸螢幕,將錨點放置在偵測到的平面上。
- 輕觸「主機」按鈕即可代管放置的錨點。這會將主機要求傳送至 ARCore API,其中包含資料代表錨點在附近視覺地圖項目的相對位置。
成功的主機要求會在放置位置建立錨點,並指派 Cloud Anchor 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
屬性。只要確認已建立即時資料庫並下載 google-services.json
,即可取得這項屬性的正確值。
放置錨定標記
- 應用程式開始偵測飛機後,請輕觸螢幕,將錨點放置在偵測到的平面上。
- 輕觸「主機」按鈕即可代管放置的錨點。這會將主機要求傳送至 ARCore API,其中包含資料代表錨點在附近視覺地圖項目的相對位置。
成功的主機要求會在放置位置建立錨點,並為其指派 Cloud 錨點 ID。如果主機要求成功,應用程式應顯示會議室代碼。無論使用任何裝置,你都可以使用這個程式碼,存取先前代管這個房間的錨點。
解析錨點
- 輕觸「解決」並輸入先前傳回的聊天室代碼,即可存取該聊天室代管的錨點。這會將解析要求傳送至 ARCore API,以傳回目前在聊天室中代管的所有錨點 ID。
cloud_anchor_java
會使用這些 ID,算繪附加至代管錨點的 3D 物件。
後續步驟
- 透過 ARCore Cloud Anchors 與永久 Cloud Anchors 程式碼研究室建立 Cloud Anchors 應用程式。
- 請參閱《Cloud Anchors 開發人員指南》,瞭解如何在應用程式中加入 Cloud Anchor。
- 使用 Cloud Anchors Management API,管理 ARCore 應用程式以外的 Cloud Anchor。