Location API(Java, 日本語)
Article Metadata
Location API (JSR-179) は、Java MEアプリケーションでユーザーの位置情報を取得することができます。
端末中におけるその技術の実装には、下記のようなものがあります。
- GPS技術、例えばNokia N95にあるようなもの
- Cell IDを持つ、携帯端末のネットワークを使用する
- 狭い範囲を扱う測位システムを使用する
その中で最も一般的な手法はGPSで、その他の手法はオペレータ専用APIが必要だったり、あるいは建物に機器を設置する必要があったりします。
本APIは、Java実装にjavax.microedition.locationパッケージを追加し、開発者が、ワイアレスの位置ベースアプリケーションやサービスを作成することを可能にし、また、一般的な位置に関する手段を実装することができます。そのAPIはモバイルアプリケーションに端末の現在位置や方位(コンパス方位)についての情報を提供し、ランドマーク(landmark)と呼ばれる端末に格納されるデータベースの使用/利用についてもサポートします。
クラス類
ユーザーの位置を抽象化した Location クラスがあります。そのクラスは、座標(緯度、経度)データを持ち、速度など、場所に関するオプションの情報を持つこともあります。
また、名称やそれに関する記述を含む Landmark オブジェクトを定義することもできます。Landmarkオブジェクトは今後使用するために、端末中の LandmarkStore に格納することができます。その端末がコンパスをサポートする場合、Orientationクラスを保有することもできます。
Criteriaクラスは、端末の位置取得手法に影響を及ぼすキークラスです。
// 以下に示すサンプルコードは、Location APIの使用法を記述しています。
double lat,lon;
QualifiedCoordinates qc=null;
Criteria cr=new Criteria();
cr.setHorizontalAccuracy(500);
cr.setVerticalAccuracy(500);
cr.setPreferredPowerConsumption(Criteria.POWER_USAGE_LOW);
LocationProvider lp=LocationProvider.getInstance(cr);
Location loc=lp.getLocation(60);
qc=loc.getQualifiedCoordinates();
AddressInfo adinfo = loc.getAddressInfo();
String place="";
if(adinfo!=null){
place = adinfo.getField(AddressInfo.COUNTRY);
}
// To get the latitude and longitude
lat = qc.getLatitude();
lon = qc.getLongitude();
LocationProviderクラスから、更新情報を取得する: javax.microedition.location.LocationListener
LocationListener インタフェースの setLocationListener メソッドは、以下のような記述で、更新情報を取得するために使われます。
setLocationListener( listener, interval, timeout, maxAge );
- interval - 更新頻度の固定値。秒単位で設定。
- timeout - タイムアウト時間。秒単位で設定。
- maxAge - 取得済み位置情報を、キャッシュ情報として保持しておける最大時間。

