Android 用 Cloud Anchors クイックスタート

cloud_anchor_javapersistent_cloud_anchor_java のサンプルアプリで Cloud Anchors のホスティングと解決をお試しください。

どのサンプルアプリを使用すればよいですか。

Cloud Anchor は、ARCore API クラウド エンドポイントでホストされるアンカーです。この API を使用すると、複数のユーザーが同じアプリ内でエクスペリエンスを共有できます。Persistent Cloud Anchors は、24 時間を超えてホストできる Cloud Anchors です。

  • persistent_cloud_anchor_java は、共同プロジェクトのユースケースの実装です。キーレス認証を使用して、ARCore API 呼び出しを承認します。Firebase バックエンドを使用してデバイス間で Cloud Anchor ID を共有しないため、起動と実行がはるかに簡単です。
  • cloud_anchor_java は、マルチプレーヤー型ゲームのユースケースの実装です。API キーを使用して ARCore API 呼び出しを承認します。

前提条件

要件

ハードウェア

ソフトウェア

  • Android Studio バージョン 3.0 以降と、Android SDK Platform バージョン 7.0(API レベル 24)以降
  • ARCore SDK for Android。次の 2 つの方法のいずれかで入手できます。
    • 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

  1. Android Studio で [Open] をクリックします。

  2. arcore-android-sdk ディレクトリが保存されているマシン上の場所に移動します。SDK フォルダ全体は開かないでください。代わりに、[samples] > [persistent_cloud_anchor_java] に移動して [Open] をクリックします。

Cloud アンカー

  1. Android Studio で [Open] をクリックします。

  2. arcore-android-sdk ディレクトリが保存されているマシン上の場所に移動します。SDK フォルダ全体は開かないでください。代わりに、[samples] > [cloud_anchor_java] に移動し、[Open] をクリックします。

Cloud Anchor ID の共有を設定する

Cloud Anchor ID は、ホストされている Cloud Anchors を識別する文字列です。アンカーは、ホストされるアンカーにアタッチされている 3D オブジェクトを解決(レンダリング)するために使用されます。

永続的な Cloud Anchors

Cloud Anchor ID の共有は、アプリ内でローカルに維持されるため、ここでは何もする必要はありません。

Cloud アンカー

cloud_anchor_java サンプルアプリは、Firebase の Realtime Database を使用してデバイス間で Cloud Anchor ID を共有します。実際のアプリでは別の方法を使用できます。

  1. アプリに手動で Firebase を追加します。cloud_anchor_java のパッケージ名は com.google.ar.core.examples.java.cloudanchor です。main/AndroidManifest.xml で確認できます。
  2. Firebase をアプリに追加したときに生成した google-services.json ファイルをダウンロードします。
  3. Firebase で Realtime Database を作成します。
  4. Android Studio で、google-services.json ファイルをプロジェクトの app ディレクトリに追加します。

ARCore API 呼び出しを承認する

ARCore API の呼び出しを承認して、アプリの Cloud Anchors をホストおよび解決します。Google Cloud で ARCore API を使用するの手順に沿って、Persistent Cloud Anchors の場合は キーなし認証、Cloud Anchors の場合は API キー認証を使用します。

サンプルアプリをビルドして実行する

永続的な Cloud Anchors

アプリを実行する

  1. デバイスで開発者向けオプションと USB デバッグが有効になっていることを確認します。
  2. デバイスを USB 経由で開発マシンに接続します。
  3. Android Studio で、デプロイ ターゲットとしてデバイスを選択し、[Run] をクリックします。

デバイスで persistent_cloud_anchor_java が起動し、ARCore でデバイスのカメラの前方にある飛行機が検出されます。

Google Cloud の承認が失敗した場合は、トラブルシューティングの手順をご覧ください。

アンカーを配置する

  1. アプリが飛行機の検出を開始したら、画面をタップして、検出された飛行機のいずれかにアンカーを置きます。
  2. [ホスト] ボタンをタップして、配置したアンカーをホストします。これにより、ARCore API にホスト リクエストが送信されます。このリクエストには、付近の視覚的特徴に対するアンカーの位置を表すデータが含まれます。

ホスト リクエストが成功すると、配置された場所にアンカーが確立され、Cloud Anchor ID が割り当てられます。ホスト リクエストが成功すると、アプリに客室コードが表示されます。このコードを使用すると、この部屋に対して以前にホストされていたアンカーに、どのデバイスからでもアクセスできます。

アンカーを解決する

  1. この部屋でホストされているアンカーにアクセスするには、[解決] をタップして以前に返された会議室コードを入力します。これにより、ARCore API に解決リクエストが送信され、部屋に現在ホストされているすべてのアンカーの ID が返されます。persistent_cloud_anchor_java はこれらの ID を使用して、ホストされているアンカーにアタッチされた 3D オブジェクトをレンダリングします。

Cloud アンカー

アプリを実行する

  1. デバイスで開発者向けオプションと USB デバッグが有効になっていることを確認します。
  2. デバイスを USB 経由で開発マシンに接続します。
  3. 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.jsonfirebase_url プロパティが存在することを確認してください。このプロパティの正しい値を取得するには、Realtime Database が作成されて google-services.json をダウンロードする必要があります。


アンカーを配置する

  1. アプリが飛行機の検出を開始したら、画面をタップして、検出された飛行機のいずれかにアンカーを置きます。
  2. [ホスト] ボタンをタップして、配置したアンカーをホストします。これにより、ARCore API にホスト リクエストが送信されます。このリクエストには、付近の視覚的特徴に対するアンカーの位置を表すデータが含まれます。

ホスト リクエストが成功すると、配置された場所にアンカーが確立され、Cloud Anchors ID が割り当てられます。ホスト リクエストが成功すると、アプリに客室コードが表示されます。このコードを使用すると、この部屋に対して以前にホストされていたアンカーに、どのデバイスからでもアクセスできます。

アンカーを解決する

  1. この部屋でホストされているアンカーにアクセスするには、[解決] をタップして以前に返された会議室コードを入力します。これにより、ARCore API に解決リクエストが送信され、部屋に現在ホストされているすべてのアンカーの ID が返されます。cloud_anchor_java はこれらの ID を使用して、ホストされているアンカーにアタッチされた 3D オブジェクトをレンダリングします。

次のステップ