[Android] GPS 기능 관련 API 예제

모바일이 이미 충분히 대중화되었음으로 해서.. GIS 분야 중 하나인 LBS(Location Based System; 위치 기반 시스템)을 활용할 수 다양한 앱이 꽃을 피울 기회를 맞이 한지 이미 꽤 오래되었습니다.

이에 안드로이드가 탑재된 모바일 기기의 GPS를 통해 현재 자신의 위치를 얻을 수 있는 안드로이드 API를 활용하는 샘플 코드를 공유해 봅니다. 아래는 샘플 코드에 대한 스크린 샷입니다.

사용자 삽입 이미지
위치(WGS84 타원체에 대한 경위도)는 물론이고 현재 이동 속도과 위치 정확도(휴대용 GPS의 경우 최고의 정확도 오차는 10m로 제한됨) 등을 얻어와 화면에 표시하고 있습니다. 또한 GPS의 원체 데이터 형식인 NMEA0183을 표시하고 있습니다.

GPS에게 위치데이터 힌트를 제공하는 인공위성의 수 역시 제공하고 있는데요. 이 인공위성의 수는 NMEA0183 데이터로부터 얻어올 수 있습니다. 긴 설명보다는 실제 실행 가능한 예제 코드 샘플을 공유합니다.

인터넷 상에서 공유되고 있는 다양한 소스를 취합하여 이 하나의 예제 샘플을 제작했습니다. 안드로이드에서 GPS로부터 위치 데이터 등을 취득하고자 하시는 개발자 분들에게 조금이라도 도움이 되시길 바랍니다.

GPS로부터 수신받은 좌표(WGS84 타원체의 경위도 좌표)를 다른 좌표계로 변환하기 위한 방법은 다음 URL을 통해 살펴보시기 바랍니다.

“[Android] GPS 기능 관련 API 예제”에 대한 17개의 댓글

  1. 와.. 이 홈피를 보고 눈물이 날뻔했습니다.
    철도 시공현장인데요. 산 아래로 터널이 지나가는데 산 중턱에 위치한 분묘아래로 우리 터널이 지나가는지 아닌지 측량을 하라는데..
    GPS측량기는 없고 광파기로 측량하려니 이거뭐 앞이 까마득한겁니다.

    그래서 김형준님께서 만들어주신 이 프로그램으로 한번 해보려고합니다!

    그런데 WGS84 경위도를 안드로이드폰에서 바로 TM동부나 이런 좌표로 변환해서 출력해 낼 순 없을지요…

    너무 과한욕심인가요? ㅎㅎ

    1. 안녕하세요, 감자님.
      GPS 측량기나 광파기로 측량할 정도면 매우 정밀한 측량을 하실 요량이신듯한데.. 안드로이드에 달린 GPS는 그 정밀도가 매우 낮습니다.
      단순히 WGS84 경위도 좌표계를 TM 좌표계로 변환하는 것을 원하시는 것이라면 위 글의 마지막에 소개해 드린 두개의 URL을 통해 가능하답니다.

      도움 되시길 바랍니다..

  2. 아아.. 고맙습니다 ㅠㅠ 안드로이드 LBS를 이용한 서울 유명소재지 에 관한 어플제작중인데 이런 도움되는 자료가있다니!! 고맙습니다

  3. 안녕하세요, 초등학교 5학년 고려대학교 정보영재 장현웅이라고 합니다.
    정말정말 좋은 소스 코드 감사합니다.
    p.s: 그런데 이 GPS가 실내에서는 작동이 되지 않나요? NMEA0183에는 마구마구 뜨는 게 있는데 경도, 위도 등에는 뜨는 게 없어서요…

    1. 안녕하세요 !
      GPS는 인공위성에서 신호를 잡아 위치가 계산됩니다. 안타깝게도 인공위성의 신호는 건물안에서 잘잡히지 않아 GPS는 실내에서 제대로 작동하지 않습니다. NMEA0183은 GPS 신호에 대한 전송규약(Protocol)입니다. 이 전송규약을 해석해서 GPS에 대한 오류값을 포함한 상태 정보와 위치, 시간, 방위각, 포착된 인공위성 수 등을 파악할 수 있답니다.

  4. 안녕하세요, 좋은 정보 감사합니다 ^^; 근데 다름이 아니라..
    다른부분 다 제외하고 속도값만 받아오려고 하는데.. 어떻게 손을봐야할지 모르겠네요ㅠㅠ
    도와주실수 있나요 ㅎㅎ?

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다