Aby uzyskać dostęp do interfejsów API obsługiwanych przez Usługi Google Play w aplikacji na Androida, musisz użyć obiektów klienta interfejsu API. Te obiekty obsługują połączenie z Usługami Google Play, kolejkowanie żądań i wykonywanie ich w kolejności, gdy połączenie jest dostępne. W razie potrzeby możesz tworzyć nowe klienty interfejsu API, ponieważ ich tworzenie jest niedrogie.
Rozpocznij
Zanim zaczniesz, upewnij się, że skonfigurowałeś Usługi Google Play w projekcie aplikacji.
Aby uzyskać dostęp do usługi, która nie wymaga autoryzacji, utwórz instancję
obiektu klienta usługi, przekazując obiekt
Context lub
Activity. W razie potrzeby użytkownicy otrzymają prośbę o uaktualnienie Usług Google Play, zanim zostaną wykonane jakiekolwiek wywołania interfejsu API.
Poniższy fragment kodu pokazuje, jak uzyskać ostatnią znaną lokalizację urządzenia za pomocą dostawcy uśrednionej lokalizacji:
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. } });
Aby uzyskać dostęp do interfejsów API, które wymagają autoryzacji użytkownika, postępuj zgodnie z instrukcjami dotyczącymi
autoryzowania dostępu do danych użytkownika Google.
Jeśli używasz interfejsu API, który wymaga obiektu GoogleSignInAccount, użyj metody
AuthorizationResult#toGoogleSignInAccount().
Sprawdzanie dostępności interfejsu API
Zanim włączysz funkcję, która zależy od interfejsu API Usług Google Play, sprawdź, czy
interfejs API jest dostępny na urządzeniu, wywołując
checkApiAvailability().
Poniższy fragment kodu pokazuje, jak sprawdzić, czy dostawca uśrednionej lokalizacji jest dostępny:
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.")); }