13


Location API の使用法

JSR 179 「Location API」により、アプリケーションはデバイスの位置情報機能を利用できます。たとえば、一部のデバイスは GPS (Global Positioning System) ハードウェアを搭載しています。また、ワイヤレスネットワークから位置情報を受信できるデバイスもあります。Location API では、基礎となるテクニックに関係なく、位置情報に対する標準のインタフェースが提供されます。

Location API では、「位置情報プロバイダ」が測位方式をカプセル化し、デバイスの位置に関する情報を提供します。アプリケーションは、精度や応答時間などの必要な条件を指定してプロバイダに要求を行います。適切な実装を利用できる場合、アプリケーションはこれを使用して、デバイスの実際の位置に関する情報を取得します。

Sun JavaTM Wireless Toolkit for CLDC には、シミュレートされた位置情報プロバイダが含まれています。エミュレータの「外部イベント」ウィンドウを使用して、エミュレータの位置を指定できます。また、プロバイダのプロパティーを設定したり、ランドマークのデータベースを管理することもできます。


13.1 実行時のエミュレータの位置情報の設定

エミュレータが実行されている間のシミュレートされた位置を指定できます。これを行うには、エミュレータウィンドウのメニューから「MIDlet」->「外部イベント」を選択します。「位置情報」タブをクリックします。図 13-1 を参照してください。

図 13-1 エミュレータでの位置情報の制御


External event generator with Location tab selected

タブの「位置情報」の領域で、緯度、経度、高度、速度、および進路の値を入力できます。Location API を使用するアプリケーションは、これらの値をエミュレータの位置情報として受け取ることができます。

より詳細なテストでは、時間の経過に伴う移動を記述する位置情報スクリプトを設定できます。位置情報スクリプトは、位置のリスト (中間地点) と関連付けられた時間で構成される XML ファイルです。Sun JavaTM Wireless Toolkit for CLDC は、位置情報スクリプトの中間位置の間を補間することで、エミュレータの現在の位置を決定します。ここで、開始位置 (time="0") と 10 秒後の位置を指定する、簡単な位置情報スクリプトを示します。

<waypoints>
  <waypoint time="0"
            latitude="14" longitude="50" altitude="310" />
  <waypoint time="10000"
            latitude="14.5" longitude="50.1" altitude="215" /> 
</waypoints>

高度の値はメートル単位、時間の値はミリ秒単位です。

テキストエディタを使用して、位置情報スクリプトを作成します。作成したスクリプトは、「スクリプト」フィールドの横にある「参照」ボタンを押して指定して、外部イベントウィンドウにロードできます。その下にあるコントロールで、位置情報スクリプトの再生、一時停止、停止、およびスクリプトの先頭または末尾への移動を実行できます。時間スライダを特定の位置にドラッグすることもできます。

一部のデバイスでは方位の測定も可能です。この情報をアプリケーションで利用できるようにするには、「方位」の「状態」フィールドを「サポート対象」に変更し、方位角、ピッチ、およびロールの値を入力します。「磁極」チェックボックスは、方位角とピッチの値を、地球の磁界を基準にするか、真北と重力の方向を基準にするかを指定します。

予期していない状況をアプリケーションが処理する方法をテストするには、「位置情報プロバイダ」ボックスの「状態」フィールドを「一時的に使用不可」または「非稼働中」に変更します。アプリケーションがエミュレータの位置情報を取得しようとすると、例外がスローされ、アプリケーションがどのように応答するかを確認できます。


13.2 位置情報プロバイダの設定

Sun JavaTM Wireless Toolkit for CLDC の位置情報プロバイダのプロパティーは、環境設定を使用して設定できます。ユーザーインタフェースで、「編集」->「環境設定」を選択し、「位置情報」をクリックします。

図 13-2 位置情報プロバイダの設定


Preferences window with the Location category selected

「位置情報」のフィールドで、ツールキットの組み込み位置情報プロバイダのプロパティーを指定できます。環境設定で指定するプロパティーは、アプリケーションが位置情報プロバイダに要求を行うときに使用する Criteria クラスに対応します。


13.3 ランドマークの設定

Sun JavaTM Wireless Toolkit for CLDC エミュレータには、実際の多くのデバイスと同様に、「ランドマークストア」システムが含まれています。ランドマークストアは、名前などの情報と場所が関連付けられたもののコレクションです。ランドマークストアを管理するには、メニューから「ファイル」->「ユーティリティー」を選択し、「ランドマークの管理」を選択して「起動」を押します。

図 13-3 ランドマークマネージャー


Manage Landmark Store window for adding, editing, or removing landmarks

ランドマークマネージャーには、1 つのランドマークストアの内容が表示されます。JSR 179 では少なくとも 1 つのランドマークストアが必要で、これはデフォルトストアと呼ばれます。別のランドマークストアを選択したり、新しいランドマークストアを作成するには、ウィンドウ上部にある「ランドマークストア」コンボボックスで選択します。

「ランドマークストアの管理」ボタンをクリックすると、ランドマークストアを追加または削除できます。ランドマークストアの名前は変更できません。

ランドマークは、ランドマークストアに固有な「カテゴリ」に関連付けることができます。現在のランドマークストアのカテゴリは、ウィンドウの左側の区画に表示されます。リストの下にあるボタンを使用して、カテゴリを追加または削除できます。カテゴリに一致するランドマークだけを表示する場合は、1 つまたは複数のカテゴリのチェックマークを外します。また、「カテゴリが設定されていません」にチェックマークを付けると、カテゴリが関連付けられていないランドマークを表示できます。

ランドマークマネージャーの右側の区画には、現在のランドマークストアにあるランドマークが一覧で表示されます。ランドマークをクリックすると、右側の区画の下部に詳細なリストが表示されます。

新しいランドマークを追加するには、「追加」をクリックしてフィールドに適切な情報を入力します。現在選択しているランドマークを変更する場合は、「編集」をクリックします。なお、現在選択しているランドマークを削除する場合は、「削除」をクリックします。

図 13-4 ランドマークの追加または編集


Landmark window with General tab selected

メインウィンドウの「カテゴリを割り当て」を使用して、ランドマークのカテゴリを指定することもできます。