独創的なものはすべてシンプルです。 J2MEの位置情報サービスの作成

良い一日!



はじめに



今日、 GPSCell IDなどのジオロケーションサービスは、私たちの生活に不可欠な要素となっています。 彼らの助けを借りて、たとえば、私たちがどこにいるのかを見つけたり、Foursquareなどのソーシャルネットワークで自分の位置を共有したりすることができます。

多くのJ2ME携帯電話は、 Location APIJSR-179 )をサポートしています 。 これを使用すると、このプラットフォームに役立つ、そして最も重要な興味深いアプリケーションを簡単に作成できます。

この記事では、J2ME用のLocation APIの可能性を検討し、小さくても非常に興味深いアプリケーションを作成することを提案します。 しかし、まず最初に。





ジオロケーションサービスは何に使用されますか?



ジオロケーションサービスを使用すると、次の3つの質問にすばやく回答できます。





たとえば、あなたは非常に気分が悪く(パパパ)、一人の通行人があなたの隣にいないので、言葉を言うことはできません。 GPSがあなたの助けになり、あなたの位置の座標を救急車に送ります。 残念ながら、この原則は911に電話をかける場合にのみ米国で機能します。



要点をつかむ



アプリケーションを使用するには、次の要件を満たす電話が必要です。



このような電話は、たとえば、 Nokia E71、E66、N95、N96、6210 Navigatorなどです。



デバイスを見つける



デバイスを見つけるために、 Location APIは利用可能なリアルタイムのポジショニングメソッドを使用します。 精度は、使用する方法によって異なります。

通常、必要な情報、つまり幅、経度、高さを提供する組み込みのGPSデバイスが使用されます。



は0〜90度(北または南)で表されます。

経度は0〜180度(西または東)で表されます。

高度はそれぞれ、 海抜0メートルで表されます。



アプリケーションはいくつかの位置決め方法を使用できます。





理論から実践へ



JSR-179は、携帯電話の内部に配線されたjavax.microedition.locationパッケージにすぎません。 開発者にJ2MEの位置情報サービスを開発する機会を提供し、すべての必要な情報を提供します(座標から始まり、マークのリポジトリで終わる)。

ハードウェアプラットフォームは、現在利用可能なリアルタイムポジショニング方法を決定します。 次のように、使用する方法を心配する必要はまったくありません。 J2MEが解決します。 したがって、利用可能な最も正確な方法( GPSCell ID )が使用されます。



Location APIが次の方法で利用できることを確認できます。

... public boolean isLocationSupported() { boolean isItTrue = true; try { Class.forName("javax.microedition.location.Location"); } catch (Exception e) { isItTrue = false; } return isItTrue; } ...
      
      







それでは、さらに進んでいきましょう



位置情報アプリケーションを作成するには、次のクラスを操作する必要があります。





理論を理解して統合するために、小さなMIDlet (いわゆるJ2MEアプリケーション)を書くことをお勧めします。

 //     import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import javax.microedition.location.*; //    ,   MIDlet public class FirstGeo extends MIDlet implements CommandListener { //     Display dsp; Form frm; StringItem data; Command cmdExit; //   MIDleta public FirstGeo() { dsp = Display.getDisplay(this); frm = new Form("First Geo-located application"); data = new StringItem("Location: ","Unavailable"); cmdExit = new Command("Exit",Command.EXIT,1); } //     //          public void startApp() throws MIDletStateChangeException { dsp.setCurrent(frm); frm.append(cmdExit); frm.setCommandListener(this); frm.append(data); // ,    -   if (isLocationSupported()) { Criteria cr = new Criteria(); cr.setHorizontalAccuracy(500); LocationProvider lp = LocationProvider.getInstance(cr); Location l = lp.getLocation(10); QualifiedCoordinates qc = l.getQualifiedCoordinates(); data.setText("Latitude: " + qc.getLatitude() + "\n" + "Longitude: " + qc.getLongitude() + "\n" + "Altitude: " + qc.getAltitude() + "\n"); } else { destroyApp(true); } } //        public void pauseApp() throws MIDletStateChangeException { //    } //   public void destroyApp(boolean uncond) throws MIDletStateChangeException { if (uncond == true) { notifyDestroyed(); } } public void commandAction(Command c, Displayable d) { if (c == cmdExit && d == dsp) { destroyApp(true); } } // ,       public boolean isLocationSupported() { boolean isItTrue = true; try { Class.forName("javax.microedition.location.Location"); } catch (Exception e) { isItTrue = false; } return isItTrue; } }
      
      







そのため、数分で、現在の場所の幅、経度、高さを決定するアプリケーションを作成しました。



このトピックの目的は、ジオロケーションサービスの構築のトピックを紹介することでした。 Location API全体をチェックアウトする場合は、 をご覧ください



PS 残念ながら、私はソースをコンパイルしてスクリーンショットを表示するのに働くPCとはほど遠いです




All Articles