Para acessar APIs com tecnologia do Google Play Services no seu app Android, é necessário usar objetos de cliente da API. Esses objetos processam a conexão com os serviços do Google Play, enfileirando solicitações e as executando 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 de criar.
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 de 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
de qualquer chamada de API ser executada.
O snippet de código a seguir mostra como acessar a última localização conhecida do dispositivo usando o provedor de localização unificado:
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.")); }