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