소프트웨어 이야기

안드로이드 ADT에서 GPX 파일 올려 GPS신호 emulation하기

이현봉 2010. 10. 22. 14:31
안드로이드 위치기반 GPS관련한 어플을 안드로이드 에뮬레이터로 돌리려면 DDMS 중 "emulator control" 뷰에서 위도, 경도를 manual로 제공하는 방법이 있다.  그러면 LocationManager 인스턴스에 requestLocationUpdates()를 통해 등록된 LocationListener 인스턴스의 onLocationChanged()가 DDMS가 보낸 위도,경도등을 Location타입으로 받아 일을 처리한다.

그런데 emulator control에서 위치를 나타내는 GPX, KML 타입 파일을 로드해 좌악 좌표를 에뮬레이터로 보낼 수 있다고 했는데 잘 되지 않았다.  로드해도 대체 반응이 없다.  여러개의 서로 다른 GPX 파일들을 로드해보아도 에러도 안뜨고 그냥 먹통이다.
http://developer.android.com/guide/developing/tools/ddms.html 에 가보아도 말이 없고.  답답하다.

구글링을 해 보았더니 GPX 파일 버젼이 1.1 이어야지만 DDMS가 로드한단다 (http://code.google.com/p/android/issues/detail?id=2528).  그래서, 파일의 버젼을 1.1로 고쳤더니 잘 로드되어 돈다. 



볼 수록 안드로이드 프레임워크와 그 주변 구글 서비스 생태계의 방대함에 인상이 깊어지고 있다.  Component 스타일 소프트웨어 개발이 잘 적용되었다.  하긴 Joshua Bloch를 비롯해 많은 자바캠프에 있던 사람들이 구글로 자리를 옮겼으니 원래 안드로이드가 갖고 있던 object/component 맛이 더욱 고도화 된 것이 이상하지 않다.  안드로이드는 다양한 하이레벨 컴포넌트/API가 제공되기에 코드는 간단해 질 수 있으나 한편 사용자의 사용패턴과 내부 자원에 따라 컴포넌트들이 서로 엮이며 asynchronous하게 작동하므로 주의해서 어플 설계가 필요하다.  물론 간단히 몇 개 화면과 주욱 한개의 스레드로 흘러가는 것은 정말 간단히 만들 수 있다.  DDMS만 해도 잘 만들었다.  그래도 기왕에 조금 더 신경써서 GPX version 1.1 부터 지원한다고 알려주면 안되나?  욕심이 끝이 없다.