Places SDK for Android を使用すると、 デバイスの現在報告されている位置情報。場所の例としては ビジネス、スポット、地理的位置などが含まれます
権限
ライブラリを使用するために、アプリのマニフェストで追加の権限を宣言する必要はありません。
ライブラリは、使用するすべての権限をマニフェストで宣言します。ただし、アプリで
PlacesClient.findCurrentPlace()
実行時に位置情報の利用許可をリクエストする必要があります。
アプリで PlacesClient.findCurrentPlace()
を使用していない場合は、
ACCESS_FINE_LOCATION
権限と ACCESS_COARSE_LOCATION
権限の導入
マニフェストに次の行を追加します。
<manifest ... xmlns:tools="http://schemas.android.com/tools"> ... <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" tools:node="remove"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" tools:node="remove"/> ... </manifest>
<ph type="x-smartling-placeholder"></ph>について詳しく知る 権限の使用を検討してください。また、 EasyPermissions をご覧ください。
現在の場所を取得する
デバイスが現在設置されているローカル ビジネスや場所を探すため 次の手順を実施します
ContextCompat.checkSelfPermission
を呼び出す ユーザーがデバイスへのアクセスを許可しているかどうかを確認する あります。アプリには、ユーザーに許可を求めるコードも含める必要があります。 結果を処理します アプリの権限をリクエストするをご覧ください。 をご覧ください。FindCurrentPlaceRequest
を作成します。Place.Field
のList
を渡します。その際、 アプリがリクエストするデータ型を配置します。PlacesClient.findCurrentPlace()
を呼び出します。 前のステップで作成したFindCurrentPlaceRequest
を渡します。 示します。PlaceLikelihood
のリストをFindCurrentPlaceResponse
。
フィールドは Place Search の結果に対応しており、次の 3 つの請求カテゴリに分けられます。 Basic、Contact、Atmosphere です。基本フィールドは基本レートで課金され、追加の費用は発生しません 料金。Contact フィールドと Atmosphere フィールドはより高いレートで課金されます。詳細情報 プレイス データ リクエストの課金の仕組みについて詳しくは、 使用量と請求額。
API は
FindCurrentPlaceResponse
Task
。
FindCurrentPlaceResponse
には、リソースのリストと
PlaceLikelihood
デバイスがある可能性が高い場所を表すオブジェクトです。対象
結果には、ユーザーが実際に訪れた場所、
場所が正しいことがわかります。既知の場所が存在しない場合は、リストが空になることがあります。
自動的に適用されます。
PlaceLikelihood.getPlace()
取得して
Place
オブジェクト、
PlaceLikelihood.getLikelihood()
場所の可能性評価を取得できます。値が大きいほど、
その場所が最適であるという確率です
次のコードサンプルでは、デバイスがある場所のリストを取得します。 各場所の名前と可能性を記録します。
Kotlin
// Use fields to define the data types to return. val placeFields: List<Place.Field> = listOf(Place.Field.NAME) // Use the builder to create a FindCurrentPlaceRequest. val request: FindCurrentPlaceRequest = FindCurrentPlaceRequest.newInstance(placeFields) // Call findCurrentPlace and handle the response (first check that the user has granted permission). if (ContextCompat.checkSelfPermission(this, permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { val placeResponse = placesClient.findCurrentPlace(request) placeResponse.addOnCompleteListener { task -> if (task.isSuccessful) { val response = task.result for (placeLikelihood: PlaceLikelihood in response?.placeLikelihoods ?: emptyList()) { Log.i( TAG, "Place '${placeLikelihood.place.name}' has likelihood: ${placeLikelihood.likelihood}" ) } } else { val exception = task.exception if (exception is ApiException) { Log.e(TAG, "Place not found: ${exception.statusCode}") } } } } else { // A local method to request required permissions; // See https://developer.android.com/training/permissions/requesting getLocationPermission() }
Java
// Use fields to define the data types to return. List<Place.Field> placeFields = Collections.singletonList(Place.Field.NAME); // Use the builder to create a FindCurrentPlaceRequest. FindCurrentPlaceRequest request = FindCurrentPlaceRequest.newInstance(placeFields); // Call findCurrentPlace and handle the response (first check that the user has granted permission). if (ContextCompat.checkSelfPermission(this, ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { Task<FindCurrentPlaceResponse> placeResponse = placesClient.findCurrentPlace(request); placeResponse.addOnCompleteListener(task -> { if (task.isSuccessful()){ FindCurrentPlaceResponse response = task.getResult(); for (PlaceLikelihood placeLikelihood : response.getPlaceLikelihoods()) { Log.i(TAG, String.format("Place '%s' has likelihood: %f", placeLikelihood.getPlace().getName(), placeLikelihood.getLikelihood())); } } else { Exception exception = task.getException(); if (exception instanceof ApiException) { ApiException apiException = (ApiException) exception; Log.e(TAG, "Place not found: " + apiException.getStatusCode()); } } }); } else { // A local method to request required permissions; // See https://developer.android.com/training/permissions/requesting getLocationPermission(); }
Likelihood 値について:
- 可能性は相対確率を 返された場所のリストの中で、最も一致する場所を示す 単一リクエスト。異なるリクエスト間で可能性を比較することはできません。
- 可能性の値は 0.0 ~ 1.0 の間になります。
たとえば、正しい場所が「場所」である確率が 55% である場合、 35% の確率で場所 B です 場所 A の確率は 0.55、場所 B の確率は 0.35 です。
<ph type="x-smartling-placeholder">アプリに属性を表示する
以下から取得した情報をアプリが表示するタイミング
PlacesClient.findCurrentPlace()
アプリは属性も表示する必要があります。詳しくは、次のドキュメントをご覧ください:
アトリビューション。