본문 바로가기
Development/Android

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

by 푸민 2015. 8. 9.
반응형

 

 

안녕하세요 푸민입니다.

 

안드로이드에서는 위치정보를 받기 위해서 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@네이트닷컴과 댓글로 해주세요.

반응형

댓글