This page was last modified 03:32, 2 May 2008.
S60 3rd Edition でのGPS API
From Forum Nokia Wiki
英語版: GPS API in S60 3rd Edition
概要
S60 3rd Editionは、GPS測位を完全にサポートしています。内蔵と拡張Bluetooth GPSモジュールの両方をサポートしています。市場には、既にGPSが利用可能な電話機がいくつかあります。Nokia 6110 とNokia N95 です。今後もGPS内蔵の電話機が発売されます。
Nokiaから出されたSmart2Go(別名をNokia マップ)という、無料のGPSナビゲーション・ソフトがあります。GPS測位を利用した、サード・パーティのタイトルもいくつかあります。アプリケーションでGPS測位を使うにはどうしたらよいでしょうか?
実装
2つの方法があります。最初の方法は、外部Bluetooth GPSモジュールとロー・レベルのコミュニケーションを行う方法です。これは、S60 2nd Edition で広く使用されました。これには、多くの技術的問題や、いくつかの外部Bluetooth GPS機器で正しく動作しないことがあります。また、Nokia 6110 やNokia N95 電話機の内蔵GPSモジュールとは動作しません。これは、推奨されないやり方です。
推奨される方法は、S60 2nd Edition, Feature Pack 2 で導入されたLocation API を使う方法です。これは、S60 3rd Edition でもサポートされています。
Location API には、いくつかのキーとなるクラスがあります。RPositionServerとRPositioner、TPositionInfo です。最初に、RPositionServerに接続します。次に、RPositionerのオブジェクトを作成し、現在位置を取得するための非同期リクエストを発行します。結果は、TPositionInfo構造体で返されます。
使用方法
ここに、CGpsPositionRequest というハイ・レベルなユーティリティ・クラスがあります。これは、次の3つの問題を解決します。1つ目は、ユーザー(プログラマ)からLocation API の詳細と複雑さを全て隠します。2つ目に、これは同期で動作し、ユーザーから非同期の複雑さを全て除きます。3つ目に、位置リクエスト中にプログレス・ダイアログ(ウエイト・ノート)が表示され、エンド・ユーザーは、アプリケーションは動作していることがわかります。次は、使用例です:
#include "GpsPositionRequest.h" ... // variables to hold current locations TReal latitude, longitude; // create CGpsPositionRequest object and put it into cleanup stack; // pass application name as argument CGpsPositionRequest* request = CGpsPositionRequest::NewLC( _L("My application")); // get current location (this operation can be long up to 30 seconds); // progress dialog is shown to user during this time TBool result = request->FetchCurrentPostionL(latitude, longitude); // delete request object CleanupStack::PopAndDestroy(request); // process result here if (result) { // success, use latitude and longitude coordinates } else { // failed getting current position, show error message to user }
MMPプロジェクト・ファイルに次の行を追加する必要があることに注意:
SOURCE GpsPositionRequest.cpp LIBRARY lbs.lib
また、リソース・ファイルで、GpsPositionRequest.raをインクルードするようにする必要もあります:
#include "GpsPositionRequest.ra"
CGpsPositionRequest のソース・コードのダウンロードは、ここからです: Image:GpsPositionRequest.zip
位置を選ぶ前に見るために使う(簡単な再利用できる)コンテナを含んでいる他のサンプルが、ここにあります:Image:GeoTagging Example.zip
| Related Discussions | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Getting cell info (area name) in 3rd edition? | kanu123 | General Symbian C++ | 7 | 2007-05-02 14:38 |
| How to get process information in syambian S60 3rd edition. | Shrinivas | General Symbian C++ | 3 | 2008-02-08 09:56 |
| Ownership of an outgoing call initiated by default phone application | roji | Symbian Networking & Messaging | 1 | 2006-11-21 22:53 |
| How to find if the incoming call is national or international..? | iam913082 | Symbian Networking & Messaging | 5 | 2008-03-14 14:12 |
| Remote Camera Manager - S60 3rd edition | pspickett | General Discussion | 0 | 2006-12-18 07:02 |
