티스토리 뷰

WindowsPhone

WP7 앱 개발 기초 - A-GPS 사용하기

생각많은 소심남 2011. 11. 21. 01:56

바쁘네요..
글을 올리고 싶어도 올릴 수 없다는게 참..

아무튼 지난 시간에 언급한 것과 같이 오늘은 지리적 위치를 보여주는 A-GPS를 다뤄보고자 합니다.

물론 안드로이드나 iOS에서는 어떤 기반의 GPS 기술을 사용하는지는 잘 모르겠지만
윈도우폰 7에서는 Assisted-GPS라는 기술을 사용합니다. 기존의 GPS가 직접 위성으로부터 신호를 받아 사용하는 방식이라면 여기에 적용된 A-GPS는 주변의 중계기를 활용해서 사용자의 위치를 추정합니다. 따라서 이에 따른 장단점이 있겠지요.
직접적인 방법은 위치를 가장 정확하게 알수 있는 방식이긴 하지만, 위성과의 직접적인 통신을 위해선 그만큼 베터리가 더 소모됩니다. 반면 간접적 방식은 주변 중계기를 활용하기에 앞에서 말한 단점을 줄일 수 있습니다. 하지만 위치가 부정확하고, 제가 생각하기엔 아마 중계기에 부하가 걸리지 않을까 생각되네요.
현재 우리나라에 윈도우폰 출시가 지연되는 이유 중 하나도 바로 A-GPS의 전파인증이 걸려 있다고 합니다.

아무튼 하나씩 따라가보겠습니다.

위치 파악에 있어서 가장 필수적인 클래스는 GeoCoordinateWatcher입니다. 이름에서도 지리적 성향이 드러나는군요.
using 지시자로는 System.Device.Location 네임스페이스가 추가되어야 합니다.
그리고 앞에선 언급되지 않았던 WMAppManifest.xml을 조금 볼 필요가 있습니다.


사진에 나와있는 .xml 파일을 보면 중간에 Location 관련 태그가 포함되어 있습니다. 위치 기반 서비스를 이용하기 위해선 반드시 이 태그가 있어야 되고 기본적으로 포합되어 있습니다.

우선 XnaLocation이라는 프로젝트를 생성하고 다음과 같이 클래스 정의를 해줍니다.



참고로 왼쪽에 나와 있는 창은 Extension Manager를 통해 추가한 VS10x code map이라는 겁니다. 일부러 휠을 내릴 필요없이 클릭만으로 해당 메서드로 찾아갈 수 있다는게 큰 특징입니다.

그에 앞서서 reference에 device 어셈블리를 추가시켜야합니다.


그리고 앞에서 언급했던것과 같이 GeoCoordinateWatcher를 추가시켜야 하는데 먼저 Initialize에서 생성하고 초기화시켜야 합니다.


그리고는 기존에 정의가 안된 GeoWatcherPositonChanged를 밑에서 완성시켜줘야 되겠지요.


감이 오시나요? 다음 메서드를 통해서 화면에 위도 경도,고도, 그리고 현재 시간을 출력하게 되는 겁니다.

이제 이 정보를 LoadContent에 올려야 되겠지요.다음과 같이 구성해줍니다.


이전 포스팅에서 언급한 내용들이 반복되어 나오네요.
update 메서드도 다음과 같이 짜줍니다.


지금과 같이 해주면 문자열의 크기가 Viewport에 따라서 달라지겠지요. 그럼 가로로 볼때나 세로로 볼때나 사용자는 그에 맞는 폰트를 볼수 있기도 하겠구요.

마지막으로 Draw도 간단하게 시작과 끝으로 마무리지으면 됩니다.


단순하게 화면에 뿌려줄 글자체와 화면색을 조정하는 것이었습니다.
실행 결과는 다음과 같습니다.



신기한 것은 보다시피 에뮬레이터에서도 자신의 위치를 마음대로 변경시킬 수 있기 때문에 그에 해당하는 위도와 경도가 바뀌는 것을 확인 할 수 있었습니다.

전체적으로 간단하긴 했지만 가장 핵심적인 건 GPS 정보를 받기위해선 System.Device.Location 어셈블리를 추가시키고 관련정보를 삽입해야 했다는 점이었습니다. 아마 다음 포스팅은 이와 관련해서 또하나의 기능인 bing Map 서비스를 이용하는게 아닐까 생각되네요.

댓글