Acessar APIs do Google

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

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 do objeto cliente do serviço, transmitindo um objeto Context ou Activity. Se necessário, os usuários vão receber uma solicitação para atualizar o Google Play Services antes da execução de qualquer chamada de API.

O snippet de código a seguir mostra como conseguir 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 método AuthorizationResult#toGoogleSignInAccount().

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