|
||||||||
Home »風景写真 »茨城の風景 »D100の世界 »蕎麦三昧 »温泉三昧 »考える葦 »パンドラの箱 » | »HP内検索エンジン | |||||||
■ 携帯電話のGPS機能 Part6 (ちょっとだけ本気モード)そろそろちょっとだけ本気で携帯電話のGPS機能について、検討中です。自作するiアプリって、こんな感じで書いています。 2つのJAVAで構成しています。 完成するのはいつになるかなぁ。 5月までに出来れば良いなぁ。 // SH903i_GPSクラスはプログラムの本体となるクラスです。 // [SH903i_GPS.java] Start import com.nttdocomo.ui.*; //パッケージのインポート // GPS情報の測位 public class SH903i_GPS extends IApplication { // iアプリの開始 public void start() { GPSCanvas c=new GPSCanvas(); Display.setCurrent(c); c.exe(); } } // GPSCanvasクラスはキャンパスとなるクラスです。 // [GPSCanpas.java] Start // GPS (Global Positioning System) などに代表される、位置情報を取得するデバイスの制御を行うクラスを定義 import com.nttdocomo.device.location.*; // アプリケーションならびにユーザインターフェースの作成に使用するクラスを定義 import com.nttdocomo.ui.*; import javax.microedition.io.*; import java.io.*; // 測位を実行するか?待ちうけ画面(キャンバス) public class GPSCanvas extends Canvas { int keyEvent=-999;//キーイベント String text =""; //テキスト //実行 void exe() { //グラフィックス Graphics g=getGraphics(); //ソフトラベル setSoftLabel(SOFT_KEY_1,"測位開始"); setSoftLabel(SOFT_KEY_2,"ログ閲覧"); while (true) { //画面の描画 g.lock(); g.setColor(g.getColorOfName(g.WHITE)); g.fillRect(0,0,getWidth(),getHeight()); g.setColor(g.getColorOfName(g.BLACK)); g.drawString("決定キーで入力[60バイト以内]:",0,12); g.drawString(text,0,24); g.unlock(true); //キーイベント if (keyEvent==Display.KEY_SELECT) { //文字入力 imeOn(text,TextBox.DISPLAY_ANY,TextBox.KANA); } else if (keyEvent==Display.KEY_SOFT1) { ///GPS起動&測位開始&結果表示 writeGPS(); } else if (keyEvent==Display.KEY_SOFT2) { ///過去のログデータの表示 readGPS(); } keyEvent=-999; //スリープ try { Thread.sleep(100); } catch (Exception e) { } } } // GPS起動&測位開始&結果表示 void writeGPS() { try { //測位の為の初期設定を行います。 自律測位を行うことを指定 いよいよここからが本格的なプログラムの作成です。 public static final int MODE_STANDALONE 測位モードを表す定数値で、自律測位を行うことを表します(=2)。 LocationProvider.getLocation() を呼び出した際に、 基地局からのアシストデータ無しに測位を行います。 そのため、圏外でも測位できるというメリットが有りますが、 測位精度や測位にかかる時間は、他のモードに 比べて劣ります。 import com.nttdocomo.device.location.Compass; // 電子コンパス機能を提供します。 import com.nttdocomo.device.location.Degree; // 緯度・経度などの角度を表します。 // 角度は、DEGREE 単位(浮動小数点数表現、 固定小数点数表現)と DMS 単位を取得可能 import com.nttdocomo.device.location.GPSLocationProvider; // GPS を用いる測位機能を表すクラスです。 import com.nttdocomo.device.location.Location; // 測位結果を表します。 //このオブジェクトには、緯度・経度・高度・測地系・水平方向の精度といった位置情報、 ならびに測位時刻が格納されています。 import com.nttdocomo.device.location.LocationProvider; // 現在地を測位する機能にアクセスする手段を提供します。 クラス LocationProvider これを唱えると、現在地を測位する機能にアクセスする手段を提供します。 測位する機能にアクセスするには、getLocationProvider() を呼び出し、 測位機能を表すインスタンスを取得する必要があります。 取得した測位機能インスタンスは、 このクラスのいずれかのサブクラスのインスタンスです。 インスタンス取得後、 そのインスタンスに対して setMeasurementMode(int) を用いて測位モードを設定することができます。 実際に設定することが可能な測位モードについては、 getAvailableMeasurementMode() により調べることができます。 インスタンスに設定されている測位モードは、 getMeasurementMode() によって取得することができます。 ここで指定した測位モードが測位精度や反応速度に与える影響は機種依存です。 取得したインスタンスの getLocation() メソッドを呼び出すと、 指定した測位モードで現在地の測位を行います。 その際、iアプリはサスペンドしません。 測位により得られた位置情報は、 測位結果オブジェクトとして返されます。 出来るだけ楽をしたい私なのですが、、、このクラスは如何なものなのでしょうか? 導入されたバージョン: DoJa-3.0 (505iGPS)、DoJa-4.0LE、DoJa-5.0 (903i) Doja-3.0から採用されたクラスって、、、ちょっと古いですねぇ。 (今や、1年前だって大昔と感じる携帯電話の世界なのです。) クラス GPSLocationProvider GPS を用いる測位機能を表すクラスです。 GPSをLocationProviderの前に付けるって、、、ちょっと期待しますねぇ。 なら、このクラスは楽好きな私に優しい存在なのではないか! との、期待が膨らみます。 で、マニュアルによりますと、 このクラスのインスタンスを得るには LocationProvider.getLocationProvider(int) を、 引数に LocationProvider.METHOD_GPS を 指定して呼び出して下さい。 インスタンス取得後の振る舞いの概要については、 スーパークラスの記述を参照して下さい。 導入されたバージョン: DoJa-5.0 (903i) 楽するなら、「GPSLocationProvider」ってことのようです。 だって、私の買った携帯はSH903iですから!!! ■ まとめ 判り難い呪文も何度か読んでいると、次第に理解できてくるようになります。 |
尾瀬で幕営しま専科 |
Copyright © 2002-2007 観天望気 All Rights Reserved. |