Android アプリで Google Play 開発者サービスを利用した API にアクセスするには、API クライアントオブジェクトを使用する必要があります。これらのオブジェクトは、Google Play 開発者サービスへの接続を処理し、接続が利用可能になったときにリクエストをキューに登録して順番に実行します。API クライアントは低コストで作成できるため、必要に応じて新しい API クライアントを作成できます。
始める
始める前に、アプリ プロジェクトで Google Play 開発者サービスをセットアップしてください。
承認を必要としないサービスにアクセスするには、
サービスのクライアント オブジェクトのインスタンスを作成し、
Contextまたは
Activity
オブジェクトを渡します。必要に応じて、API 呼び出しが実行される前に、Google Play 開発者サービスをアップグレードするようユーザーに求められます。
次のコード スニペットは、Fused Location Provider を使用してデバイスの最後に確認された位置情報を取得する方法を示しています。
Kotlin
// Code required for requesting location permissions omitted for brevity. val client = LocationServices.getFusedLocationProviderClient(this) // Get the last known location. In some rare situations, this can be null. client.lastLocation.addOnSuccessListener { location : Location? -> location?.let { // Logic to handle location object. } }
Java
// Code required for requesting location permissions omitted for brevity. FusedLocationProviderClient client = LocationServices.getFusedLocationProviderClient(this); // Get the last known location. In some rare situations, this can be null. client.getLastLocation() .addOnSuccessListener(this, location -> { if (location != null) { // Logic to handle location object. } });
ユーザー認証を必要とする API にアクセスするには、Google ユーザーデータへのアクセスを承認するガイドに沿って操作してください。
Google ユーザーデータへのアクセスを承認する。
GoogleSignInAccount オブジェクトを必要とする API を使用している場合は、
AuthorizationResult#toGoogleSignInAccount()
メソッドを使用します。
API が利用可能かどうかを確認する
Google Play 開発者サービスの API に依存する機能を有効にする前に、
デバイスで API が利用可能かどうかを
checkApiAvailability()呼び出して確認します。
次のコード スニペットは、Fused Location Provider が利用可能かどうかを確認する方法を示しています。
Kotlin
fun getLastLocationIfApiAvailable(context: Context?): Task<Location>? { val client = getFusedLocationProviderClient(context) return GoogleApiAvailability.getInstance() .checkApiAvailability(client) .onSuccessTask { _ -> client.lastLocation } .addOnFailureListener { _ -> Log.d(TAG, "Location unavailable.")} }
Java
public Task<Location> getLastLocationIfApiAvailable(Context context) { FusedLocationProviderClient client = getFusedLocationProviderClient(context); return GoogleApiAvailability.getInstance() .checkApiAvailability(client) .onSuccessTask(unused -> client.getLastLocation()) .addOnFailureListener(e -> Log.d(TAG, "Location unavailable.")); }