안녕하세요 푸민입니다.
안드로이드에서는 위치정보를 받기 위해서 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는 최소 설정 거리 이상 움직일 시 재검색하도록 합니다.
마지막 인자인 locationListener는 LocationListener 로
provider가 enabled 인지 disabled인지와 Location정보를 받을 수 있는 리스너입니다.
보통은 이렇게 사용하는데 GalaxyNote 에 4.1.2버전을 상대로 개발을 하다보니 아주 크리티컬한 에러가 발생했습니다. Provider를 Network로 설정한 뒤 요청을 했을때 onLocationChanged()를 호출안할때가 있다는것....ㄷㄷㄷ
결국 찾아낸것이 LocationClient 라는 클래스입니다.
해당 클래스는 GooglePlayServices라는 라이브러리에 포함되어 있는 클래스로
Manager와 비슷하지만 조금 다르게 동작합니다.
LocationClient client = new LocationClient(context, connectionCallbacks, connectionFailedListener); |
이렇게 사용합니다.
파라미터로 callBack과 FailedListener를 줍니다.
connet() 후 연결이 되면 실패 시 Failed로 신호를 주고, 성공 시 callBack로 신호를 줍니다.
성공을 하면 client가 Location 정보를 가지고 있는데,
getLastLocation()메소드를 호출하면 Location값을 반환해 줍니다.
또한 requestLocationUpdate 메소드가 있으니 활용하면 좋습니다.
문의사항은 sj60414@네이트닷컴과 댓글로 해주세요.
'Development > Android' 카테고리의 다른 글
[안드로이드] 터치이벤트, 핀치 인 아웃 드래그 제어 (0) | 2015.08.24 |
---|---|
[안드로이드] Api level 19 Package Index 요약 (0) | 2015.08.13 |
[안드로이드] Sprite Animation 적용해보기! (0) | 2015.08.11 |
[안드로이드] 커스텀 View 만들기 (0) | 2015.08.08 |
[안드로이드] 메모리 관리용 Null 처리 (0) | 2015.08.07 |
댓글