以上で完了です。

開発を始めるには、デベロッパー ドキュメント をご覧下さい。

Google Places API for Android をアクティベートする

まず初めに Google Developers Console で次の作業を行います。

  1. プロジェクトを作成または選択する
  2. Google Places API for Android をアクティベートする
  3. 適切なキーを作成する
続ける

現在の場所

Google Places API for Android を使用して、端末の現在地を見つけることができます。これは、現時点で検出される端末の場所です。検出される場所には、企業や商店、有名スポット、地理的位置などが含まれます。

パーミッション

PlaceDetectionApi.getCurrentPlace() を使用するアプリの場合は、ACCESS_FINE_LOCATION パーミッションを要求する必要があります。

Android 6.0 Marshmallow の新しいパーミッション モデル

Android 6.0 Marshmallow には、パーミッションを処理するための新しいモデルが導入されており、ユーザーがアプリをインストールやアップグレードする際のプロセスが効率化されています。バージョン 8.1 以降の Google Play サービスを使用している場合は、Android 6.0 Marshmallow SDK を対象とするようにアプリを設定して、新しいパーミッション モデルを使用することができます。

アプリが新しいパーミッション モデルに対応している場合、ユーザーはアプリをインストールまたはアップグレードする際にパーミッションを付与する必要はありません。その代わりに、アプリは実行時にパーミッションが必要な場合はパーミッションをリクエストします。これにより、パーミッションを要求するダイアログがユーザーに対して表示されます。

詳細については、Android 6.0 Marshmallow と、新しいパーミッション モデルに対応するために必要なアプリの変更に関するドキュメントをご覧ください。

使用制限

PlaceDetectionApi.getCurrentPlace() メソッドの使用には、段階的なクエリ制限があります。詳細については、使用制限をご覧ください。

現在の場所を取得する

ローカル ビジネスなどの端末の現在地を見つけるには、PlaceDetectionApi.getCurrentPlace() を呼び出します。

任意で PlaceFilter を指定して、結果を 1 つ以上(最大 10 個)のプレイス ID に絞り込んだり、現在営業中の場所のみを選択したりできます。フィルタを指定しない場合、結果はフィルタされません。

API が PendingResultPlaceLikelihoodBuffer を返します。PlaceLikelihoodBuffer には、可能性のあるプレイスを表す PlaceLikelihood オブジェクトの一覧が含まれています。各プレイスで、それが正しい場所である可能性を示す指標が結果に表示されます。フィルタの条件に一致する既知のプレイスがない場合、バッファは空白になる場合があります。

PlaceLikelihood.getPlace() を呼び出すと Place オブジェクトを取得でき、PlaceLikelihood.getLikelihood() を呼び出すとそのプレイスの Likelihood(信頼度)を取得できます。値が高ければ高いほど、そこが目的の場所である可能性が高いことを示します。

次のコードサンプルでは、端末があるであろう場所の一覧を取得し、名前とそれぞれの場所の Likelihood を記録します。

PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi
    .getCurrentPlace(mGoogleApiClient, null);
result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() {
  @Override
  public void onResult(PlaceLikelihoodBuffer likelyPlaces) {
    for (PlaceLikelihood placeLikelihood : likelyPlaces) {
      Log.i(TAG, String.format("Place '%s' has likelihood: %g",
          placeLikelihood.getPlace().getName(),
          placeLikelihood.getLikelihood()));
    }
    likelyPlaces.release();
  }
});

Likelihood 値について:

  • Likelihood では、1 つの要求に返されたプレイスの一覧の中で最も一致する場所の相対的確率を提供します。異なる要求間での Likelihood を比較することはできません。
  • Likelihood の値は、0~1.0 です。
  • PlaceLikelihoodBuffer の Likelihood の合計は、常に 1.0 以下になります。合計は必ずしも 1.0 になるとは限りません。

たとえば、正しい場所が場所 A である可能性が 55% で、場所 B である可能性が 35% であることを表すため、PlaceLikelihoodBuffer には場所 A(0.55)と場所 B(0.35)の 2 つが含まれることになります。

アプリに属性を表示する

アプリに PlaceDetectionApi.getCurrentPlace() から取得した情報を表示する場合、アプリには属性も表示する必要があります。詳細については、属性をご覧ください。

フィードバックを送信...