Google API にアクセスする

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."));
}