tmytのらくがき

個人の日記レベルです

実世界のGPSをエミュレートしてみる

Windows Phone 7の開発環境もやっとこさBetaになりました。
Windows Phone 7のエミュレータってディスプレイがマルチタッチだとエミュレータでもマルチタッチできるそうですよ、奥さん。
じゃぁGPSもLocationAPI対応ならエミュレータから参照できるかも!と思って試してみましたがそんなことはありませんでした。残念です。
そこで、位置情報を使ったアプリケーションを開発する際につかうクラスを模した物に任意の座標を突っ込んで実験するというコードがあります。

If you’ve been excited about Windows Phone 7 development and the platform being Silverlight for application development, you probably rushed and downloaded all the tools (which are free by the way). You may have even got the samples from the SDK and noticed the Location services example…but wondered why it doesn’t work.

Simulate Geo Location in Silverlight Windows Phone 7 emulator

ですが実際の座標を突っ込んでみたい。となると、こいつではどうにもなりません。

そこで、エミュレータのホストマシンとHTTPで通信を行い、ホストマシンに接続されているGPS座標をエミュレータから使用するコードを書きました。
これを使うと、実世界のGPSデータを使ってエミュレータで開発ができるようになります。
ホストマシン側のアプリケーション、デバイス側のクラス実装をZIPで固めておきました。ホスト側の実行には.NET4が、ビルドにはVS2010が必要です。

使い方

デバイス側
HttpGeoLocation _geo = new HttpGeoLocation();
_geo.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(_geo_PositionChanged);
_geo.StatusChanged += new EventHandler<GeoPositionStatusChangedEventArgs>(_geo_StatusChanged);
ホスト側

ホスト側のアプリケーションを起動しておくだけ。LocationAPI対応のGPSデバイスが必要です

http://refy.net/temp/HttpGeoLocation.zip