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