마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

LocationManager 관해 질문드리겠습니다.

0 추천
LocationManager를 보면

onLocationChanged 메소드가있는데 현재 상태가 변화에따라 주기적으로 상태를 호출할수있습니다.

제가 여기서 느끼는 문제점은 리스너를 실행시키고 이동을 하지 않는다면 불러지지 않게 됩니다.

어플을 테스트해볼때 켜놓고 한자리에 가만히 두면 로그가 찍히지않고 움직일시에 바로 찍히는데

가만히 있을경우에 현재 내 위치를 보고자 한다면 어떻게 해야 합니까?
초보개발짜욥 (2,800 포인트) 님이 2016년 7월 8일 질문

3개의 답변

0 추천
이름 그대로 내 위치의 변화가 있어야 호출이되는 메서드입니다.

이동하지 않는다면 마지막으로 저장되어있는 location이 현재 내 위치라고 가정합니다.

특정 작업을 추가해서 가만히 있다는것을 알아내고,

그 시점에 내 위치를 가져오려면 추가적으로 위치를 가져오는 작업을 해야 할것 같습니다.
캬옹이 (37,920 포인트) 님이 2016년 7월 8일 답변
0 추천

논리적으로 접근해 보시면 쉽게 이해 되실겁니다.

일단 onLocationChanged 해당 메서드는 위치가 변할때 불리워지지만 해당함수가 불리워 지는 조건이 하나 더있습니다.

해당 조건은 위치를 요청했을시 처음 무조건 한번은 불리워 지게 된다는 것이죠~!

즉 위치요청시 현재 좌표는 언제나 가져 올수 있다는 겁니다.

즉 맨처음 위치를 받아오고 이동이 없다면 굳이 현재 위치를 받아올 필요가 업습니다.

이동하지 않았으니 맨처음 받았던 위치 그대로 겠지요~!

ThisPlus (46,920 포인트) 님이 2016년 7월 8일 답변
0 추천
LocationManager 의 위치 측위 함수의 경우 대표적으로만 보면 2가지가 있는 걸로 알고 있습니다.

하나는 주기적으로 측위하는 함수인 requestLocationUpdate 함수와

하나는 한번만 측위하는 함수인 requestSingleUpdate 두가지가 있는 걸로 알고 있습니다.

requestLocationUpdates 의 경우는 함수 파라미터로 전달하는 거리 또는 시간값 이상 일때 (거리와 시간 조건이 and 조건인지 or 조건인지는 확실히 모르겠습니다.) 콜백을 호출하며

requestSingleUpdate 는 호출시 한번에 한하여 측위 되었을시 콜백을 호출 하고 있습니다.

따라서 상황에 따라 적절히 사용 하셔야 할 것 같습니다.

저 같은 경우는 주로 requestSingleUpdate 를 알람으로 설정하여 주기적 측위를 하여 이때 주의 할 사항은 6.0 이상에서 Doze 모드시 알람이 동작하는 함수를 사용 하여야 하며 타이머 태스크를 이용해서 특정 시간 이 지났을시 타임 아웃 처리를 해주는 방법을 주로 사용하고 있습니다.

자세한 사항은 아래 링크의 API 설명을 참조 하시는게 좋을것 같습니다.

https://developer.android.com/reference/android/location/LocationManager.html
익명사용자 님이 2016년 7월 8일 답변
...