cloud_anchor_java サンプルアプリと persistent_cloud_anchor_java サンプルアプリで、クラウド アンカーのホスティングと解決を試してみましょう。
どのサンプルアプリを使用すればよいですか?
Cloud Anchors は、ARCore API クラウド エンドポイントでホストされるアンカーです。この API を使用すると、ユーザーは同じアプリでエクスペリエンスを共有できます。永続 Cloud Anchors は、24 時間以上ホストできる Cloud Anchors です。
persistent_cloud_anchor_javaは、共同プロジェクトのユースケースの実装です。キーレス認証を使用して ARCore API 呼び出しを認可します。Firebase バックエンドを使用してデバイス間で Cloud Anchor ID を共有しないため、簡単に起動して実行できます。cloud_anchor_javaは、マルチプレイヤー ユースケースの実装です。ARCore API 呼び出しの認可に API キーを使用します。
前提条件
- アンカーと Cloud Anchors の仕組みを理解する。
- ARCore SDK for Android をインストールして構成します。
要件
ハードウェア
- 最新バージョンの Google Play 開発者サービス(AR)がインストールされた ARCore 対応デバイス
- デバイスを開発マシンに接続するための USB ケーブル
ソフトウェア
- Android SDK プラットフォーム バージョン 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 Anchors の機能を説明する cloud_anchor_java と persistent_cloud_anchor_java のサンプルアプリが用意されています。次の手順に沿って、Android Studio でアプリを開きます。
永続的な Cloud Anchors
Android Studio で、[開く] をクリックします。
マシン上の arcore-android-sdk ディレクトリが保存されている場所に移動します。SDK フォルダ全体を開かないでください。代わりに、[samples] > [persistent_cloud_anchor_java] に移動して、[開く] をクリックします。
Cloud Anchors
Android Studio で、[開く] をクリックします。
マシン上の arcore-android-sdk ディレクトリが保存されている場所に移動します。SDK フォルダ全体を開かないでください。代わりに、[samples] > [cloud_anchor_java] に移動して、[開く] をクリックします。
Cloud Anchor ID の共有を設定する
Cloud Anchor ID は、ホストされている Cloud Anchors を識別する文字列です。これらは、ホストされているアンカーにアタッチされた 3D オブジェクトを解決またはレンダリングするために使用されます。
永続的な Cloud Anchors
Cloud Anchor ID の共有はアプリ内でローカルに維持されます。ここでは何もする必要はありません。
Cloud Anchors
cloud_anchor_java サンプルアプリは、Firebase の Realtime Database を使用してデバイス間で Cloud Anchor ID を共有します。独自のアプリでは別のソリューションを使用できます。
- アプリに Firebase を手動で追加します。
cloud_anchor_javaパッケージ名はcom.google.ar.core.examples.java.cloudanchorです。main/AndroidManifest.xmlにあります。 - アプリに Firebase を追加したときに生成された
google-services.jsonファイルをダウンロードします。 - Firebase で Realtime Database を作成します。
- Android Studio で、プロジェクトの
appディレクトリにgoogle-services.jsonファイルを追加します。
ARCore API 呼び出しを承認する
アプリの Cloud Anchor をホストして解決するために、ARCore API への呼び出しを承認します。Google Cloud で ARCore API を使用するの手順に沿って、永続 Cloud Anchor にはキーレス認証、Cloud Anchor には API キー認証を使用します。
サンプルアプリをビルドして実行する
永続的な Cloud Anchors
アプリを実行する
- デバイスで開発者向けオプションと USB デバッグが有効になっていることを確認します。
- USB 経由でデバイスを開発マシンに接続します。
- Android Studio で、デプロイ ターゲットとしてデバイスを選択し、[Run] をクリックします。
デバイスで persistent_cloud_anchor_java が起動し、ARCore がデバイスのカメラの正面にある平面を検出するよう求められます。
Google Cloud の承認が失敗した場合は、トラブルシューティングの手順をご覧ください。
アンカーを配置する
- アプリが平面の検出を開始したら、画面をタップして、検出された平面のいずれかにアンカーを配置します。
- [HOST](ホスト)ボタンをタップして、配置したアンカーをホストします。これにより、ホスト リクエストが ARCore API に送信されます。このリクエストには、アンカーの位置をその近くのビジュアル フィーチャーに対する相対位置で表すデータが含まれます。
ホスト リクエストが成功すると、配置された場所にアンカーが設定され、Cloud Anchor ID が割り当てられます。ホスト リクエストが成功すると、アプリにルームコードが表示されます。このコードを使用すると、このルームで以前にホストされたアンカーにどのデバイスからでもアクセスできます。
アンカーを解決する
- [RESOLVE] をタップし、以前に返されたルームコードを入力して、このルームでホストされているアンカーにアクセスします。これにより、ARCore API に解決リクエストが送信され、現在部屋でホストされているすべてのアンカーの ID が返されます。
persistent_cloud_anchor_javaは、これらの ID を使用して、ホストされているアンカーにアタッチされた 3D オブジェクトをレンダリングします。
Cloud Anchors
アプリを実行する
- デバイスで開発者向けオプションと 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 に存在することを確認してください。このプロパティの正しい値を取得するには、Realtime Database が作成されていることを確認し、google-services.json をダウンロードします。
アンカーを配置する
- アプリが平面の検出を開始したら、画面をタップして、検出された平面のいずれかにアンカーを配置します。
- [HOST](ホスト)ボタンをタップして、配置したアンカーをホストします。これにより、ホスト リクエストが ARCore API に送信されます。このリクエストには、アンカーの位置をその近くのビジュアル フィーチャーに対する相対位置で表すデータが含まれます。
ホスト リクエストが成功すると、配置された場所にアンカーが設定され、Cloud Anchors ID が割り当てられます。ホスト リクエストが成功すると、アプリにルームコードが表示されます。このコードを使用すると、このルームで以前にホストされたアンカーにどのデバイスからでもアクセスできます。
アンカーを解決する
- [RESOLVE] をタップし、以前に返されたルームコードを入力して、このルームでホストされているアンカーにアクセスします。これにより、ARCore API に解決リクエストが送信され、現在部屋でホストされているすべてのアンカーの ID が返されます。
cloud_anchor_javaは、これらの ID を使用して、ホストされているアンカーにアタッチされた 3D オブジェクトをレンダリングします。
次のステップ
- ARCore の Cloud Anchors と永続的な Cloud Anchors の Codelab を使用して、Cloud Anchors アプリを作成します。
- Cloud Anchors デベロッパー ガイドで、Cloud Anchors をアプリに組み込む方法をご確認ください。
- Cloud Anchors Management API を使用して、ARCore アプリの外部で Cloud Anchors を管理します。