Development/Android

[안드로이드] Location 정보 가져오기

푸민 2015. 8. 9. 14:46
반응형

 

 

안녕하세요 푸민입니다.

 

안드로이드에서는 위치정보를 받기 위해서 LocationManager 클래스를 제공합니다.


LocationManger는 Network, GPS 등의 Provider를 받아서 해당 Provider에게 위치정보를 요청할수 있는 클래스입니다.

 

 String provider = LocationManager.getProvider(LocationManager.NETWORK_PROVIDER); 


이런 식으로 Provider를 불러온 뒤 사용하면 됩니다.

 

그리고 Criteria라는 클래스를 설정해주면 해당 상황에 맞는 Provider를 설정해줍니다.

 

 String provider = LocationManager.getBestProvider(criteria, true); 


두번째인자인 boolean은 enabled된 즉 사용가능한 것만 받도록하는 파라미터입니다.
이렇게 받은 프로바이더로 요청을 합니다.

 

 LocationManager.requestLocationUpdates(provider, minTime, minDistance, locationListener); 

 
minTime은 최소 설정한 시간 뒤에 재검색을 하도록 하는 것이고,

minDistance는 최소 설정 거리 이상 움직일 시 재검색하도록 합니다.

마지막 인자인 locationListenerLocationListener

provider가 enabled 인지 disabled인지와 Location정보를 받을 수 있는 리스너입니다.

보통은 이렇게 사용하는데 GalaxyNote 에 4.1.2버전을 상대로 개발을 하다보니 아주 크리티컬한 에러가 발생했습니다. Provider를 Network로 설정한 뒤 요청을 했을때 onLocationChanged()를 호출안할때가 있다는것....ㄷㄷㄷ

결국 찾아낸것이 LocationClient 라는 클래스입니다.

해당 클래스는 GooglePlayServices라는 라이브러리에 포함되어 있는 클래스로

 

Manager와 비슷하지만 조금 다르게 동작합니다.

 

 LocationClient client = new LocationClient(context, connectionCallbacks, connectionFailedListener);
 client.connet(); 


이렇게 사용합니다.
파라미터로 callBackFailedListener를 줍니다.

connet() 후 연결이 되면 실패 시 Failed로 신호를 주고, 성공 시 callBack로 신호를 줍니다.

성공을 하면 client가 Location 정보를 가지고 있는데,

getLastLocation()메소드를 호출하면 Location값을 반환해 줍니다.

 

 

또한 requestLocationUpdate 메소드가 있으니 활용하면 좋습니다. 

 

문의사항은 sj60414@네이트닷컴과 댓글로 해주세요.

반응형