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