Acessar APIs do Google

Para acessar APIs com tecnologia do Google Play Services no app Android, use objetos de cliente da API. Esses objetos processam a conexão com o Google Play Services, enfileirando solicitações e executando-as em ordem quando uma conexão está disponível. Você pode criar novos clientes de API conforme necessário, já que eles são baratos.

Primeiros passos

Antes de começar, configure o Google Play Services no projeto do app.

Para acessar um serviço que não exige autorização, crie uma instância de objeto de cliente do serviço, transmitindo um Context ou um Activity objeto. Se necessário, os usuários vão receber uma solicitação para fazer upgrade do Google Play Services antes que qualquer chamada de API seja executada.

O snippet de código a seguir mostra como acessar a última localização conhecida do dispositivo usando o provedor de localização combinada:

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

Para acessar APIs que exigem autorização do usuário, siga o guia para autorizar o acesso aos dados do usuário do Google. Se você estiver usando uma API que exige um objeto GoogleSignInAccount, use o AuthorizationResult#toGoogleSignInAccount() método.

Verificar a disponibilidade da API

Antes de ativar um recurso que depende de uma API do Google Play Services, verifique se a API está disponível no dispositivo chamando checkApiAvailability().

O snippet de código a seguir mostra como verificar se o provedor de localização combinada está disponível:

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