Android 앱에서 Google Play 서비스 기반 API에 액세스하려면 API 클라이언트 객체를 사용해야 합니다. 이러한 객체는 Google Play 서비스에 대한 연결을 처리하고 요청을 현재 재생목록에 추가한 후 연결이 가능한 경우 순서대로 실행합니다. API 클라이언트는 구성하는 데 비용이 들지 않으므로 필요에 따라 새 API 클라이언트를 만들 수 있습니다.
시작하기
시작하기 전에 앱 프로젝트에서 Google Play 서비스를 설정해야 합니다.
승인이 필요하지 않은 서비스에 액세스하려면 Context
또는 Activity
객체를 전달하여 서비스의 클라이언트 객체 인스턴스를 만듭니다. 필요한 경우 API 호출이 실행되기 전에 사용자에게 Google Play 서비스를 업그레이드하라는 메시지가 표시됩니다.
다음 코드 스니펫은 융합 위치 제공자를 사용하여 기기의 마지막으로 알려진 위치를 가져오는 방법을 보여줍니다.
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. } }
자바
// 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. } });
사용자 승인이 필요한 API에 액세스하려면 가이드를 따라 Google 사용자 데이터에 대한 액세스를 승인하세요.
GoogleSignInAccount
객체가 필요한 API를 사용하는 경우 AuthorizationResult#toGoogleSignInAccount()
메서드를 사용하세요.
API 사용 가능 여부 확인
Google Play 서비스 API에 종속된 기능을 사용 설정하기 전에 checkApiAvailability()
를 호출하여 기기에서 API를 사용할 수 있는지 확인합니다.
다음 코드 스니펫은 융합 위치 제공업체를 사용할 수 있는지 확인하는 방법을 보여줍니다.
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.")); }