문제점해결

핸드폰에서 gps안 잡힘

예쁜꽃이피었으면 2015. 1. 6. 13:05


핸드폰에서 gps안 잡힘




 GPS 신호 잘 못잡으시는 분들 세팅 및 추천어플! 7

http://www.ppomppu.co.kr/zboard/view.php?id=android&no=46962



실내에서 GPS를 잡을 수 없다는 건 도대체 무슨 소리인가? (실내에서 GPS 쓰기?)

http://attach.tistory.com/66


"무선 네트워크 사용"(네트워크 위치)과 "GPS 도우미 사용"(A-GPS)이 똑같다고 하는 멍청이들이 있는데 한심하기 짝이 없어 이 글을 씀.





http://en.wikipedia.org/wiki/GPS_signals
http://en.wikipedia.org/wiki/Time_to_first_fix

    



황당하게도 실내에서 GPS가 안 잡힌다는 멍멍이 지껄이는 소리를 가끔 듣게 된다. 정말 어이가 없는 일이 아닐 수가 없다.

GPS는 원래 실내에서 잡히지 않는 것이다. 여느 전파와는 달리 위성 신호인 GPS 신호는 직진성이 강하며 회절, 반사가 잘 안 된다.
(물론 전혀 안 되는 것은 아니다. 고층 빌딩 사이를 지나갈 때 내비게이션에서 현재 위치가 이상한 것은 이 때문이다)
그런데 가끔 휴대폰에서 현재 위치 조회를 하면 내 위치가 뜨는 것은 뭐냐? 라고 묻는다면, 바로 저 "무선 네트워크 사용"으로 찾는 것이다.


잘 생각해 보자.
일반 가정에 있는 PC에서 다음 지도나 네이버 지도를 열면, 그 집이 있는 동 주민센터나 구청, 혹은 시청 등이 뜰 것이다. 왜일까? PC에 GPS 수신장치가 달린 것도 아닌데? 더욱이, 자기 집이 뜨는 것도 아니다.

당연히 절대 GPS가 아니다.
(물론, PC용 다음·네이버 지도의 현재위치 표기와 스마트폰의 네트워크 위치 측정은 다르다.) 







그럼, 저 세 가지를 한번 구분해 보실까요?


1. 무선 네트워크(3G·4G·Wi-Fi 위치) 사용(※위 사진은 안드로이드 스토어에서 앱이 요구하는 위치 권한 안내 페이지를 찍은 것)

"무선 네트워크 사용", 혹은 "네트워크 (위치) 기반"이라고도 한다. 왜 위 사진에서 "대략적인" 위치 정보라고 적혀 있을지 생각해 보자.
와이파이를 "켜기만 하면" 휴대폰이 잡을 수 있는 와이파이 AP의 하드웨어 주소(MAC 주소)를 읽을 수 있으니 이를 이용하는 것이다.
(※하드웨어 주소는 네트워크 장비의 고유 ID값을 말한다. 00:00:00:00:00:00과 같은 거.)


예를 들어, 와이파이를 켠 상태에서 GPS로 현재 위치를 잡는다면, 그 위치(위·경도)와 그 위치에서 잡히는 AP의 하드웨어 주소(MAC 주소), 신호 세기가 애플 또는 구글의 서버로 전송된다. 위 경고창에 나온 것처럼 "무선 네트워크 사용"에 체크하면 "익명의 사용자 위치가 수집될 수 있습니다"라는 경고가 뜨는 것도 이 때문이다. 이 때 "사용자 위치"는 휴대폰의 위치가 아닌 와이파이 AP의 위치(AP의 하드웨어 주소 + AP의 위·경도 + AP의 와이파이 신호 세기)를 가리키는 것이다.
와이파이를 켠 상태에서도 GPS 쓰지 않는다면 "사용자 위치"가 전송될 일 따위는 없다.
(GPS 없인 와이파이 AP의 정확한 주소(위·경도)를 알 수 없으니까.)
(반대로 와이파이를 꺼 놓으면 와이파이 AP의 하드웨어 주소를 알 수가 없으니 위치 정보를 수집하지 않는다.)
("GPS 위성 사용"을 체크한 상태라도 GPS를 쓰지 않으면 사용자 위치는 전송되지 않는다. "GPS 위성 사용"을 체크한다고 해서 항상 GPS를 사용하는 게 아니니까.)

결국 구글, 애플의 서버에는 수 만개의 와이파이 AP 주소 데이터베이스가 쌓일 테고 이를 바탕으로 다른 사람에게 현재 위치를 제공할 수 있는 셈이다. Wi-Fi AP가 여러 개 잡힐 수록 삼각측량 정확도가 높아지는 건 당연한 일.
(요기요기 참조)

중요한 사실은 Wi-Fi가 연결되지 않았더라도 Wi-Fi 옵션이 "켜져 있기만 하면" 주변 AP의 하드웨어 주소를 읽을 수 있기 때문에 Wi-Fi를 껐을 때보다(즉, 휴대폰 기지국 기반보다) 정확도가 높아진다는 것이다.
물론 3G, 4G 등 모바일 네트워크일 때는 예전부터 기지국(기지국에는 GPS로 기지국 위치가 미리 설정되어 있다)에서 현재 위치를 제공하기 때문에 와이파이를 켜지 않는다면 이를 바탕으로 현재 위치를 제공하게 된다. 역시 이것도 삼각 측량으로.








2. GPS 위성 사용(※위 사진은 안드로이드 플레이스토어에서 앱이 요구하는 위치 권한 안내 페이지를 찍은 것)

말 그대로 GPS 위성을 이용하는 것이다. 왜 위 사진에서 "자세한" 위치 정보라고 적혀 있을지 생각해 보자.
뭐 GPS의 원리는 검색하면 잘 나와 있듯이 GPS 위성은 항상 고정된 위치에 있고, 세 개 이상의 GPS 위성으로부터 신호를 받게 되면 삼각 측량으로 현재 위치를 잡는 것이다. 위에서 설명한 기지국 기반과 원리는 비슷하다. 하지만, GPS 위성 신호는 여느 위성통신이 그렇듯이 전파가 "일직선"으로만 움직이기 때문에 기지국 기반 위치 정보보다 월등히 정확하다.
(※위에서 언급했듯이 3G, 3.9G, 4G 신호는 위성 신호보다 회절도 잘 되고 반사(...)도 잘 되기 때문)

더욱이 지표면은 고도차가 있으니 실제로는 네 개 이상의 GPS 신호를 받아야 작동하게 되어 있다. 본인 경험상으로는 대체로 탁 트인 평지에서 최대 11개까지 잡는 모습을 확인할 수 있었다. 당연히 많은 GPS신호를 잡을수록 더 정확하겠지. 또한 군사용 GPS 신호는 오차가 50cm가량이라는데 일반용 GPS 신호는 보통 5미터 이내라고 한다.
(※일반용 신호는 일부러 틀린 정보를 제공한다고도 하는데 대한항공 여객기 격추 사건 이후로는 안 그런다고 하더라?)






3. GPS도 우미 사용(※위 사진은 안드로이드 플레이스토어에서 앱이 요구하는 위치 권한 안내 페이지를 찍은 것)

아마 이것 덕분에 실내에서 GPS가 잘 잡히니 마니 하는 소리가 나오는 것일 테지.
이것은 실내에서 GPS를 잡아 주는 게 절대 아니다!!
(※그리고 위 사진이 2번 사진과 같은 건 이 글을 보는 you의 착각이 아니다.)

GPS 신호라는 것은 일반적인 라디오나 TV, 휴대폰 신호보다 매우 약하다. 최상단 위키백과 문서 링크를 보면 알겠지만, 전송속도가 byte/s 수준이란다.
(※014xy 등 다이얼 업 모뎀의 최고 속도가 56kbps, 즉 7kiB/s라는 걸 생각해 보자.)

게다가 위성 신호는 직진성이 강하다는 것을 생각해 볼 때 당연히 이 "미약한 신호"를 잡기 위해선 시간이 오래 걸릴 수밖에 없다.

그래서 이를 보완하고자 생각해 낸 게,
"내가 현재 있는 위치에서는 어느 GPS 신호가 잡힐까?" 하는 걸 미리 휴대폰이 알고 있으면 더 빨리 GPS 신호를 잡지 않을까? 하는 것이다.
(※GPS 위성은 30개가 넘게 있으며, 항상 고정된 위치에 있으니(지구의 자전 속도와 똑같으니까) 동일한 곳에서는 같은 GPS 신호만 잡을 수 있다.)

물론, 휴대폰은 항상 움직이기에 당연히 언제 어느 GPS 신호가 잡힐지는 미리 알 수 없다. 그래서 인터넷상의 특정 서버에 "어느 위치에서 하늘을 바라보면 어느 GPS가 잡힐 거임" 하는 정보를 저장해 놓고 저 "GPS 도우미 사용" 옵션을 켜면 GPS 신호를 잡기 전에 특정 서버에서 GPS 위치 정보를 다운로드 받고 나서 GPS 신호를 잡는 것이다.

당연히 인터넷 연결은 필수이며 저 옵션을 켜면 "3G·4G 데이터 사용료가 부과될 수 있습니다"라는 경고를 띄워 주는 것이다.
(※휴대폰에 따라 이 안내 문구는 안 나올 수도 있다)
(※"GPS 위성 사용" 만 체크하면 데이터 통신을 하지 않는다. 할 필요도 없고. "무선 네트워크 사용"은 휴대폰 기지국으로 현재 위치를 알아낼 땐 데이터 통신을 하지 않는다. WiFi AP로 현재 위치를 알아낼 땐 구글·애플 서버에서 해당 WiFi AP의 주소를 얻어와야 하기 때문에 데이터 통신을 하지만.)


간단하게 말하자면, "인터넷에서 현재 위치에서 잡을 수 있는 GPS가 뭔지 대략 알아낸 다음에, 그걸 바탕으로 GPS 신호를 조금 더 빨리 잡는다." 라는 것이 저 "GPS 도우미 사용"이란 것이다. "조금 더 빨리 잡는다"는 것이지, "현재 위치를 알아낸다"가 아니다. "무선 네트워크 사용"과 A-GPS는 전혀 다른, 별개란 말. 그러니 "GPS 사용"을 체크해야만 이 옵션을 체크할 수 있는 거다.

그럼 저 문장에서 "현재 위치"는 뭐냐고 말할 수도 있는데, 넓게는 "대한민국", 좁게는 "네트워크 기반(무선 네트워크 사용)"이 것이다. 영어로 Assistant-GPS, A-GPS라고 하며, 이와 대비해서 그냥 "GPS 위성 사용"은 Simultaneous(Standalone?) GPS, S-GPS라고 한다.

즉, 맨 처음 GPS를 켜서 신호를 잡을 때만 "네트워크 기반" 정보를 이용할 뿐, GPS를 이용하는 앱을 껐다 켜지 않는 이상 구글 지도 등에서 현재 위치를 계속해서 갱신할 때는 GPS 신호만으로 현재 위치를 알아내는 것은 "GPS 위성 사용"과 똑같다는 것이다.
(※GPS 아이콘이 깜빡깜빡거릴 때(샘숭 갤럭시 기준) 한 번만 데이터 통신을 한다는 거고(GPS 도우미 사용), GPS로 현재 위치를 잡아서 GPS 아이콘이 켜져 있을 때는 "GPS 도우미 사용"을 체크하든 안 하든 GPS 신호만 받는다는 것이다.)


A-GPS를 사용하지 않더라도 GPS 신호를 빨리 잡기도 하는데(이를 warm start라고 함), 이는 마지막으로 GPS를 잡은 위치가 디바이스(휴대폰)에 저장되어 있기 때문이다. 그래서 마지막으로 GPS를 사용한 지역에서 멀리 떨어진 지역에서 다시 GPS를 이용하거나, 혹은 며칠이나 몇 주 지난 다음에 GPS를 이용하게 되면 똑같이 한참 걸리는 이유(이를 cold start라고 함)가 이것이다.
(※내비게이션을 써 봤다면 이 문단을 아주 쉽게 이해했을 것이다.)

또한 가끔 엉뚱한 곳의 데이터를 받아 올 수도 있는데, 이러면 GPS 신호를 잡는 데 정말 한참 걸릴 수도 있다. 이럴 땐 "GPS도우미 사용" 옵션을 끄거나(물론, 이러면 GPS 잡는 시간이 오래 걸릴 테지), 안드로이드 OS에선 이를 바로잡아주는 앱인 GPS Status를 쓰면 도움이 될 것이다.









결론적으로, 위 사진 속 안드로이드 OS에서 "장소·위치" 옵션은 아래쪽 옵션이 우선이니 실내에선 저 세 가지 옵션을 다 켠다면 죽어라 GPS신호만 받고 있는 셈이 되므로 결국은 현재 위치를 잡을 수 없게 된다.
(※물론, "네트워크 기반(무선 네트워크 사용)"으로 대략적인 위치를 받아오긴 했지만 "GPS 위성 사용"을 체크한 이상 GPS를 통해 정확한 현재 위치를 잡으려고 죽어라 용쓰는 것이다. 휴대폰 입장에선 여기가 실내인지, 바깥인지는 알 수 없으니.)

그럼 실내에서는 어떻게 해야 하느냐?
바로 첫째 옵션인 "무선 네트워크 사용"만 켜면 되는 것이다. 그럼 현재 위치에서 잡히는 Wi-Fi AP의 MAC주소를 구글 서버에 보내서 구글 서버에 저장된 Wi-Fi AP의 주소가 뜰 테니. 단, Wi-Fi를 끈 상태라면 휴대폰 기지국을 기반으로 현재 위치를 찾기 때문에 오차가 클 수밖에 없다.

반대로, 탁 트인 실외에서는 "무선 네트워크 사용"은 끄고, "GPS 위성 사용"만 켜는 것이 좋겠으나, 기본적으로 GPS가 무선 네트워크보다 우선순위가 높으니 굳이 "무선 네트워크 사용"을 끌 필요는 없을 것이다.











그래서 이를 생각하고 다음 지도와 같은 앱들은 "GPS 위성 사용"을 켜도 무조건 GPS 신호가 잡힐 때 까지 무작정 기다리는 게 아니라, GPS 신호가 잡히기 전까지는 "모바일 네트워크 기반"으로 현재 위치를 표시해 준다. 이럴 땐 왼쪽 스크린 샷과 같이 "GPS 검색 중"이라 뜰 것이고, Wi-Fi가 켜져 있지 않거나 주변에 Wi-Fi AP가 없다면 휴대폰 기지국으로 현재 위치를 알아낼 테니 당연히 현재 위치 오차 범위가 상당히 클 것이다.

그리고 GPS가 잡힌다면 오른쪽 스크린 샷과 같이 "GPS에서 위치 설정"라고 뜰 것이다. 그리고 현재 위치가 정확하게 뜨겠지. 저 "GPS에서 위치 설정"이란 글귀가 안 뜨면 GPS를 잡지 못했다는 뜻이고, "네트워크 기반"으로 현재 위치를 잡고 있다는 뜻이다. 저 둘을 꼭 구분해야 할 것이다.

덧붙여, 위치 옵션에서 "GPS 위성 사용"을 체크한다고 해서 항상 GPS 수신기가 켜져 있는 게 아니다. "GPS 위성 사용"을 체크하더라도 앱에서 위치 요청을 안 하면 GPS 수신기를 켜지 않는다. 이거 헷갈리는 사람도 의외로 많은데 위 스크린 샷처럼 상태 표시줄(notification bar)에 빨간 색 네모 친 GPS 아이콘이 떠 있을 때만 GPS 수신기를 켜서 GPS를 작동시키는 것이다.


GPS 앱을 켜도 멀티태스킹으로 다른 앱 띄우면 GPS가 끊겨버린다고?
항상 GPS를 수신하도록 하고 싶다고?

그럼 요런 위젯을 설치해서 On으로 두면 항상 GPS를 수신할 것이다.
(권한을 보면 GPS위치만 있는 것을 알 수 있을 것이다.)

물론 배터리는 광탈하겠지.


그리고 말인데, 구글에는 "네이티브 한국인"이 없나 보다. "GPS로 현재 위치를 찾아냄"이라고 해도 될 텐데 "GPS에서 위치 설정"이라는 저따위 애매모호한 말로 변역해 놓은 걸 보니. 그러니 사람들이 헷갈려 하지. 아니면 구글은 한국이 일본 식민지인 줄 아나 보다(設定의 뜻을 곰곰히 뜯어 보셈).




안드로이드 예전 버전에서도 위 예시에 나온 샘숭, 소니 전화기를 포함한 대부분 단말기에선 맨 위 사진처럼 단순히 번역만 해 놓아서 "도로 수준으로 탐색" 따위 말로 모호하게 표현해놨는데, 엘지 전화기는 아래 사진처럼 상세히 설명해 놓은 걸 알 수 있다.


본문에서 설명한 것들이 모두 괄호 안에 표시되어 있음을 알 수 있다. 이런 점은 참 기특하군, 엘지. 다른 폰들도 이런 식으로 설명해 놓으면 사람들이 오해하지 않을 텐데 말이야.
(※그리고 이 글을 제대로 이해했다면 위 사진에서 "Wi-Fi를 켜면 보다 정확한 위치 보기 가능"이란 말은, 3G일 때보다 Wi-Fi일 때가 더 정확하다는 말이지 GPS 위성 사용과는 전혀 상관없는 말인 걸 알 수 있을 것이다.)













더보기



A-GPS가 실내에서 GPS를 잡게 해준다는 말도 안 되는 소리나, A-GPS는 오차범위가 50~100미터가 나올 수도 있다는 헛소리를 보면 참 황당하기 그지없다.
그리고 이 글을 잘 읽어보았다면 GPS Status를 쓰면 오차가 줄어든다는 소리도 참 황당하기 그지 없다는 말이란 걸 알 수 있을 것이다.
(※도대체 GPS 신호를 빨리 잡는 것과 정확도는 무슨 상관이 있단 말이야? 일단 잡으면 끝인데.)

모두 "A-GPS"와 "네트워크 기반"을 혼동해서 오는 것이다.









결정적으로 말인데, 설명서 좀 보고 쓰시죠? 설명서에도 떡하니 나와 있는데???










쓰잘데기 없는 소리 한마디 더 하자면,
GPS는 자기 위치를 알아내기 위한 "값싼 저전력 수단"이긴 하지만 이는 "상시 전원이 연결된" 기기에 한정된 이야기이다.
위에서도 언급했지만, GPS를 이용한 현재 위치 계산은 GPS 위성이 하는 것이 아닌 "단말기"가 하는 일이다.
즉, 스마트폰이 현재 위치를 계산한다는 것이다.
GPS 위성은 자기 위치와 현재 시각만을 사방팔방에 뿌릴 뿐이다. TV나 라디오처럼 단방향 통신이란 것이다. GPS 단말기는 절대로 GPS 위성으로 데이터를 보내지 않는다! 받기만 한다!
초당 전송률이 byte/s 수준밖에 안 되는데 GPS 위성이 어떻게 일일이 계산을 해 준단 말인가?

스마트폰 전력 소모 1위인 부품은 디스플레이라고 하지만 CPU도 바쁘게 작동하고 있을 땐 배터리 소모가 심하다.
GPS로 트래킹 앱 같은 걸 실행하고 있으면 배터리 광탈을 피할 수 없다. CPU가 최소 네 개에서 열 개 이상의 GPS 신호를 받아서 현재 위치를 계산해야 하니까.

한 마디로, 게임만 배터리 광탈하는 게 아니란 소리.

반응형