Android アプリで Geospatial API を有効にする(Kotlin/Java)

Geospatial API を使用できるように、アプリの設定を構成します。

前提条件

AR の基礎的なコンセプトを理解しておいてください。 と ARCore セッションを構成する方法を確認してください。

サンプルアプリと Codelab

この動画では、地理空間情報を表示するアプリを作成する手順について説明します。 Geospatial API を使用して、実世界の場所にコンテンツを配置できます。

また、地理空間に関する Codelab の手順を行うこともできます。 同じ手順のドキュメントをご覧ください。動画で作成したサンプルアプリを実行するには、 ARCore Geospatial クイックスタートをご覧ください。

詳しくは、 Geospatial API の概要 Geospatial API に関する情報です

ARCore を使った開発を初めて行う場合は、スタートガイドをご覧ください。 でソフトウェアとハードウェアの要件、前提条件、 使用しているプラットフォームに固有のその他の情報

必ず、開発環境が ARCore SDK の要件を満たしていることを確認してください。 クイックスタートをご覧ください。

ARCore API を有効にする

アプリでビジュアル ポジショニング システム(VPS)を使用する前に、 ARCore API を有効にします Google Cloud プロジェクトで管理されます。このサービスは 地理空間アンカーのホスティング、保存、解決です。

キーレス認証が推奨されますが、API キー認証もサポートされています。

必要なライブラリをアプリに追加する

アプリでの ARCore API の呼び出しを承認したら、次にライブラリを アプリで地理空間機能を有効にします。

アプリの build.gradle ファイルで、Google Play 開発者サービスをセットアップして Play を追加します。 Service Location ライブラリです。

dependencies {
  // Apps must declare play-services-location version >= 16.
  // In the following line, substitute `16 (or later)` with the latest version.
  implementation 'com.google.android.gms:play-services-location:16 (or later)'
}

セッション構成で地理空間機能を有効にする

セッションを作成する前に、セッションの GeospatialMode を変更します。 ENABLED に変更します。

Java

Config config = session.getConfig();
config.setGeospatialMode(Config.GeospatialMode.ENABLED);
session.configure(config);

Kotlin

// Enable the Geospatial API.
session.configure(session.config.apply { geospatialMode = Config.GeospatialMode.ENABLED })

地理空間モードが ENABLED に設定されている場合、アプリケーションは以下の状態を取得することが許可されます。 地理情報を取得できます。

デバイスデータの使用を許可するようユーザーに求める

ARCore Geospatial API を使用するアプリは、ユーザーに以下のプロンプトを表示する必要があります。 ユーザーのデバイスのデータの使用を認め、許可します。詳しくは、 ユーザーのプライバシー要件 情報です。

デバイスの互換性を確認する

ARCore をサポートするデバイスがすべて Geospatial API をサポートしているわけではありません。 クイックスタートをご覧ください。

ユーザーのデバイスの互換性を確認するには、 Session.checkGeospatialModeSupported()。 false が返された場合は、次に示すように、セッションの構成を試行しないでください。 このメソッドは、 UnsupportedConfigurationException

実行時に位置情報の利用許可をユーザーに求める

アプリは実行時に位置情報の利用許可をリクエストする必要があります。

ARCore Geospatial API を使用するには、アプリで次のものを登録する必要があります。 次のような権限があります。

  • ACCESS_FINE_LOCATION ユーザーの現在地を正確に特定します。

  • ACCESS_COARSE_LOCATION ユーザーの現在地を正確に特定できない場合や、 ユーザー プライバシー要件。ただし、Geospatial API を API リクエストはおおよその位置情報で動作します。また、ユーザーが位置情報を取得した場合、API リクエストは失敗します。 権限を設定します。詳しくは以下をご確認ください。

  • ACCESS_INTERNET ARCore Geospatial API サービスに接続する必要があります。

<manifest ... >
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  <uses-permission android:name="android.permission.INTERNET" />
</manifest>

Android バージョン 12 以降を搭載したデバイスでは、 ユーザーがリクエストできる アプリがそのリソースにのみ おおよその位置情報 情報です。このリクエストに対応するには、アプリに ACCESS_COARSE_LOCATION 設定済みの権限とともに ACCESS_FINE_LOCATION, 渡されます。必要なこと 両方の位置情報の利用許可を構成します

ただし、ユーザーがおおまかな位置情報を指定すると、 API が正確な位置情報を取得できないようにします。地理空間サービスは おおよその位置情報のみを提供するアプリは、それ自体を構成できません。 このアプリでは、おおよその位置情報で Geospatial API を使用できません。

デバイスの現在地での地理空間の利用状況を確認する

Geospatial API は VPS と GPS を組み合わせて地理空間のポーズを判断するため、デバイスが位置情報を特定できる限り、API を使用できます。屋内や密集した都市環境など、GPS 精度の低い地域では、API は VPS カバレッジに基づいて高精度のポーズを生成します。一般的な条件下で、VPS の位置精度は約 5 メートル、回転精度は 5 度であると期待できます。Session.checkVpsAvailabilityAsync() を使用すると、特定のビジネスが VPS の対象かどうかを判断できます。

Geospatial API は、VPS がカバーされていない地域でも使用できます。オーバーヘッドの障害物がほとんどない、またはまったくない屋外環境では、GPS で高精度のポーズを生成できます。

次のステップ