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

android gps 두 지점간 거리값 구하는방법이요.

0 추천

현재 gps로 사용자위치를 받아오고 sharedpreferences 에 저장된 좌표값이랑 비교를 해서 전방 10m ~ 15m 앞에 있으면 브로드캐스트메시지를 보낼려고 하는데요. 

 Location mLocation = new Location("mLocation");
                        mLocation.setLatitude(lat);
                        mLocation.setLongitude(lng);

                        Location sLocation = new Location("sLocation");
                        sLocation.setLatitude(saveLat);
                        sLocation.setLongitude(saveLng);

                        distance = mLocation.distanceTo(sLocation);
                        int meter = (int)distance;
                        Log.d(TAG,"distance : " + (int)distance  + "  " + distance);

                        if(meter >= 10 || meter <= 15){
                            isEnabled = true;
                            if(isEnabled) {
                                String id = messageInfo.getId();
                                Intent intent = new Intent(LocationService2.this, LocationReceiver.class);
                                intent.setAction("org.jsb.busgod.busgod");
                                intent.putExtra("id", id);
                                sendBroadcast(intent);
                            }
                            isEnabled = false;
                        }

이런식으로 거리값을 구해서 if문에 조건을 걸었는데요. 실외로나가서 단말기로 시험해본결과 브로드캐스트메시지가 계속 날라옵니다.

distancebetween을 이용해야 되나요? 정확한 미터값을 얻기위해서는 어떻게 해야 하는건가요? 답변 부탁드리겠습니다 ㅠㅠ

우랴 (3,680 포인트) 님이 2014년 7월 8일 질문

1개의 답변

0 추천
10~15미터라... 안드로이드 단말기에 너무 많은 성능을 요구하지 않나 싶습니다.

그래도 사용하시겠다면 정확도를 확인한 뒤 사용하시면 더 원하는 결과에 가깝지 않을까 싶습니다.
인연 (31,880 포인트) 님이 2014년 7월 8일 답변
distanceTo를 사용해서 나오는 결과가 미터가 맞나요? 전혀 안맞던데요..
http://developer.android.com/reference/android/location/Location.html#distanceTo(android.location.Location)
반환값이 meter라고 하네요. 아니면 따로 별도의 함수를 만들어 사용하는 방법도 있습니다. 많은 수행을 할 때는 이 편이 유리하더군요.
그리고 결과가 전혀 안 맞다는것은 현재 기기가 네트워크 위치를 가지고 있어서 그런 문제가 아닌지요? GPS 위치를 사용한다고 하더라도 최대 정확도가 5미터 입니다. 어디까지나 최대일뿐 날씨가 안 좋다거나 현재 위치에서 위성 신호를 잘 못 찾으면 정확도는 더 떨어지게 됩니다.
gps값만 받아서 업데이트 하게끔 했는데도 네트워크 위치값을 가지고 올 수 있나요?
그렇다면 GPS 값만 받아오겠지요. 답변에도 있지만 GPS의 정확도를 한번 확인하시고 사용해보시는게 좋을 것 같습니다.
어제 성공했습니다 ^^ 답변 정말 감사드립니다. 오차범위가 약간 있는것같지만 심하게 있지 않아서 사용해도 될 것 같습니다. 다시한번 감사드립니다.
^^ 성공했다니 다행이네요 ㅎ
감사합니다 ^^ 좋은하루보내세요!
...