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 ユーザーデータへのアクセスを許可します。GoogleSignInAccount オブジェクトを必要とする API を使用している場合は、AuthorizationResult#toGoogleSignInAccount() メソッドを使用します。

API の可用性を確認する

Google Play 開発者サービスの API に依存する機能を有効にする前に、checkApiAvailability() を呼び出して、デバイスで API を使用できるかどうかを確認します。

次のコード スニペットは、統合位置情報プロバイダが使用可能かどうかを確認する方法を示しています。

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