嘗試在 cloud_anchor_java
和 persistent_cloud_anchor_java
範例應用程式中託管及解析 Cloud Anchors。
您應該使用哪一個範例應用程式?
Cloud Anchor 是錨點,託管於 ARCore API 雲端端點。這個 API 可讓使用者在相同的應用程式中分享體驗。「永久 Cloud Anchors」是可託管超過 24 小時的 Cloud 錨點。
persistent_cloud_anchor_java
是協作專案用途的實作。它使用無金鑰授權來授權 ARCore API 呼叫。由於這個 API 不使用 Firebase 後端在裝置之間共用 Cloud Anchor ID,因此設定和執行會更加簡單。cloud_anchor_java
是多人遊戲用途的實作。它會使用 API 金鑰授權 ARCore API 呼叫。
必要條件
- 瞭解錨點和 Cloud Anchors 的運作方式。
- 安裝並設定 Android 適用的 ARCore SDK。
需求條件
硬體
- 支援 ARCore 的裝置,且已安裝最新版 Google Play 服務 - AR 適用
- 可將裝置連接至開發機器的 USB 傳輸線
軟體
- 搭載 Android SDK Platform 7.0 (API 級別 24) 以上版本的 Android Studio 3.0 以上版本
- 適用於 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 錨點
在 Android Studio 中按一下「Open」。
前往您電腦上儲存 arcore-android-sdk 目錄的位置。請勿開啟整個 SDK 資料夾。請改為前往範例 >persistent_cloud_anchor_java,然後點選「Open」。
Cloud 錨點
在 Android Studio 中按一下「Open」。
前往您電腦上儲存 arcore-android-sdk 目錄的位置。請勿開啟整個 SDK 資料夾。請改為前往範例 >cloud_anchor_java,然後按一下「Open」cloud_anchor_java。
設定 Cloud Anchor ID 共用功能
「Cloud Anchor ID」是識別代管 Cloud Anchor 的字串。它們可用於解析或轉譯附加至代管錨定廣告的 3D 物件。
永久 Cloud 錨點
Cloud Anchor ID 共用會保留在本機應用程式中。你不必在這裡採取任何行動。
Cloud 錨點
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 上使用 ARCore API」步驟 並使用 less Keyless 服務 授權永久 Cloud Anchors 或 API 金鑰授權: Cloud Anchors。
建構並執行範例應用程式
永久 Cloud 錨點
執行應用程式
- 確認裝置已啟用開發人員選項和 USB 偵錯。
- 透過 USB 將裝置連接至開發機器。
- 在 Android Studio 中,選取裝置做為部署目標,然後按一下「Run」。
「persistent_cloud_anchor_java
」應會在裝置上啟動,並提示 ARCore 偵測裝置相機前方的飛機。
如果 Google Cloud 授權失敗,請參閱疑難排解步驟。
放置錨點
- 應用程式開始偵測飛機後,輕觸螢幕,在偵測到的平面上放置錨點。
- 輕觸「主持人」按鈕,代管放置錨點。這會傳送主機要求至 ARCore API,其中包括代表錨點相對於其附近的視覺功能的資料。
主機要求成功後,會在放置的位置建立錨點,並為其指派 Cloud Anchor ID。如果主機要求成功,應用程式應顯示會議室代碼。使用這個程式碼,即可在任何裝置上存取這個房間先前代管的錨定標記。
解析錨定標記
- 輕觸「解決」並輸入先前傳回的會議室代碼,即可存取這個房間代管的錨點。這會傳送解析要求至 ARCore API,該 API 會傳回目前在遊戲室中代管所有錨點的 ID。
persistent_cloud_anchor_java
會使用這些 ID 算繪附加至代管錨點的 3D 物件。
Cloud 錨點
執行應用程式
- 確認裝置已啟用開發人員選項和 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
,即可取得這個屬性的正確值。
放置錨點
- 應用程式開始偵測飛機後,輕觸螢幕,在偵測到的平面上放置錨點。
- 輕觸「主持人」按鈕,代管放置錨點。這會傳送主機要求至 ARCore API,其中包括代表錨點相對於其附近的視覺功能的資料。
主機要求成功後,會在放置的位置建立錨點,並為其指派 Cloud Anchors ID。如果主機要求成功,應用程式應顯示會議室代碼。使用這個程式碼,即可在任何裝置上存取這個房間先前代管的錨定標記。
解析錨定標記
- 輕觸「解決」並輸入先前傳回的會議室代碼,即可存取這個房間代管的錨點。這會傳送解析要求至 ARCore API,該 API 會傳回目前在遊戲室中代管所有錨點的 ID。
cloud_anchor_java
會使用這些 ID 算繪附加至代管錨點的 3D 物件。
後續步驟
- 使用具有永久 Cloud Anchors 程式碼研究室的 ARCore Cloud Anchors 建立 Cloud Anchors 應用程式。
- 參閱 Cloud Anchors 開發人員指南,瞭解如何將 Cloud Anchors 整合到應用程式。
- 使用 Cloud Anchors Management API,管理 ARCore 應用程式之外的 Cloud Anchors。