2013-05-31 5 views
24

LocationManager를 사용할 수있는 제공 업체가 있는지 확인할 수 있지만 Google Play 서비스 위치 API를 통해 수행 할 수 있습니까?play 서비스 위치 API로 활성화 된 안드로이드 확인 위치 서비스

사실 "내 위치 액세스"가 해제되어 있으면 모든 API 호출 (connect(), requestLocationUpdates())이 성공하지만 onLocationChanged()를 결코 얻을 수 없습니다.

어리석게도 LocationManager와 LocationClient를 모두 사용해야합니다.

나는 내가 필요로하는 onLocationChanged가 (0가 호출되지는 결코 것을 알고 몇 가지 방법입니다 같아요.

답변

26

나는 문서를 빗질 한도 위치하는 경우 감지 LocationClient을 사용할 수있는 방법을 발견하지 않았습니다 onConnected, onDisconnected 및 onConnectionFailed가 위치 서비스의 사용 가능 여부와 관련이없는 것 같습니다.

현재 LocationClient를 사용하지만 이전 locationManager.isProviderEnabled(String provider) 방법을 사용하여 위치 요청을 수행하고 있습니다. 서비스가 가능합니다. 이것은 나에게 가장 적합합니다. LocationClient가 방법을 제공 했더라도, GPS와 네트워크 사이의 istinction과 나는 정말 사용자가 GPS를 사용하도록 요청할 수 있기를 바랍니다.

가 구현하고 LocationCallback을 등록하고 onLocationAvailability()을 무시하거나 가용성 상태를 검색 할 수 LocationServices.FusedLocationApi.getLocationAvailability() 전화 :

if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
    //GPS Provider disabled 
    return false; 
} 
+2

감사합니다. 어쩌면 Google의 누군가가 이것을보고 고칠 것입니다. – user1248322

+0

나는 이것도 매우 이상하게 생각합니다! – Bear

+5

'if (lm.isProviderEnabled (LocationManager.GPS_PROVIDER) || lm.isProviderEnabled (LocationManager.NETWORK_PROVIDER)) {}'나는 가장 완벽한 접근법이라고 생각합니다. – Diolor

12

이제 Google이 서비스 7.3.0을 플레이하기 때문에 위치 업데이트가 있는지 감지 할 수있는 신뢰할 수있는 방법이있다. 거짓 인 경우 장치 구성이 변경되지 않는 한 위치 업데이트가 전달되지 않는다는 것을 알았습니다.

이 방법은 실제로 매우 똑똑합니다. 예를 들어 Wi-Fi 전용 장치에서 Wi-Fi 장치를 사용하지 않거나 비행기 모드에있는 경우 위치 업데이트가 제공되지 않는다고 판단 할 수 있습니다 항상 사용 가능합니다.

+0

Doc : 위치 데이터의 가용성을 반환합니다. isLocationAvailable()이 true를 반환하면 getLastLocation (GoogleApiClient)에 의해 반환 된 위치는 활성 LocationRequests에 지정된 힌트 내에서 합리적으로 최신 상태가됩니다. 내 위치 정보 서비스가 활성화되어 있는지 여부에 상관없이 현재 위치 데이터가 있는지 보여줍니다. – lujop

4

Google Play 서비스 7.0 introducedSettins ApiSettins Api 어디서 필요한 위치 설정을 요청한 다음 사용하도록 설정된 경우 검색어를 사용하거나 사용자에게 사용 설정하도록 요청할 수 있습니다.

관련 문제