위치 정보를 이용한 소프트웨어 개발


위치 정보란 현재 사용자의 물리적 위치를 나타내는 값을 의미하며 이를 이용하면 다양한 응용분야의 소프트웨어 개발이 가능하다.

근래, 특히 이 위치 정보에 기반한 솔루션들이 많이 개발되고 있으며 주요 모바일 소프트웨어 플랫폼에서도 위치 정보 제공을 주요 기능의 일부로 포함하고 있다.

이 글에서는 주요한 모바일 소프트웨어 플랫폼들이 제공하는 위치 정보 제공 API에 대해 간략히 살펴보고 장단점에 대해 비교해보도록 하겠다.



1. Java ME의 경우

Java ME는 JSR-179 스팩을 정의하여 위치 정보에 대한 API를 제공한다. JSR-179 스팩은 위치 정보 및 디바이스의 기울기, 속도 등의 부가적인 정보도 얻을 수 있도록 되어 있으며 위치 정보에 대한 각종 정보 (예를 들면, 주소라든가) 또한 제공하는 API로 구성되어 있다.
JSR-179의 가장 큰 특징으로는 위치 정보를 얻기 위한 디바이스가 GPS로 한정되지 않는 다는 것이다. 얻고자 하는 위치 정보의 정확도, 비용 등의 고려 사항에 근거하여 현재 장치가 선택할 수 있는 여러 위치 정보 제공 방법 중 선택하여 동작할 수 있는 구조를 갖추고 있다. Java ME 자체가 워낙 다양한 하드웨어를 지원하는 것을 목적으로 하고 있기 때문에 당연한 구조로 보인다.

2. iPhone의 경우

iPhone의 경우는 H/W가 단일 플랫폼이기 때문에 Java ME와 같이 여러 위치 정보 제공 방법을 결정하거나하는 구조가 필요없다. 상당히 단순화된 API를 제공하는데 위치 정보 수신을 시작하기 위한 메쏘드. 이를 중단하는 메쏘드가 거의 대부분의 기능이라고 볼 수 있다.프로그램은 CLLocationManager 클래스의 startUpdatingLocation 메쏘드를 호출하여 위치 정보 수신을 시작할 수 있다.
물론, iPhone의 경우 위치 정보 뿐만 아니라 장치의 기울기, 방향 등의 정보를 UIAccelerometer 클래스를 이용하여 얻을 수 있다.

3. Android의 경우

Android SDK는 android.location 패키지를 통해 위치 정보 관련 기능을 제공한다. 이 패키지에 포함된 LocationManager 클래스를 이용하여 여러 위치 정보 제공자 중 Criteria를 이용하여 윈하는 것을 얻어올 수 있도록 한다. Criteria는 정확도, 위치 정보 종류, 비용 등의 조건에 따라 위치 정보 제공자를 선택할 수 있도록 한다.
이해하기 쉬운 주소 등의 정보를 이용하여 위도, 경도를 알아내거나 혹은 반대의 방법으로 정보를 얻을 수 있도록 Geocoder 클래스를 제공한다.
전체적으로 보았을 때 Java ME의 JSR-179와 거의 유사한 기능을 제공하고 있으나 rolling, pitch등의 정보를 제공하는 기능은 빠져있다.


위치 정보에 대해서 3개 플랫폼을 비교해 볼 때 Java ME의 JSR-179가 가장 다양한 기능을 제공하고 있다. 하지만, JSR-179에서 Picth, Roll등의 정보를 얻어오는 부분은 optional 기능으로 정의되어 있어 대부분의 장치에서는 이 정보를 활용하기는 어려울 것이다.
이에 반해 iPhone은 장치 자체가 accelerometer를 제공하고 있으므로 이를 활용한 다양한 응용프로그램을 개발할 수 있는 장점이 있다.

댓글

이 블로그의 인기 게시물

Wireless: HotSpot 2.0 이란?

Apple M1 Mac Mini에서 이더리움 (Ethereum) 채굴하기

Java: Java for Game? Java가 Game 개발에 어울릴까?