オルタナティブ・ブログ > ビジネスをデザインするブログ >

事業開発ほどクリエイティブな行為は他に無いと思いこんでいる人間の日常

Windows sensor and location をいじる

»

Windows7からこっそりと追加されたWindows Sensor and Location。

さらに言えば、私にとって、.NET Framework 4.0最大の魅力は、System.Devicesが標準で追加されたこと・・・。

しかし、いかんせん、対応ディバイスが少なく、仮想ディバイスを作って喜ぶ程度にとどめていたが、おさらいを含め、ちょこっと触ってみました。

まず、開発をする前に、何かしらのセンサーが存在している必要があります。私の場合、今回、GPSに関連したアプリをテストしたかったのですが、わざわざGPSを買うのもなんですし、だいたいWindows Sensor and Locationに対応しているものを探すのも苦労しそうなので、とりあえず、GPSが付いていないPCも、WSL対応仮想GPS付きPCにしてしまうソフト、Geosenseを利用します。Geosenseは、Google Location Servicesにより、Wifi基地情報などから、だいたいの位置を割り出してくれます。

下準備ができたら、

VS2010を起動し、System.Devicesの参照を追加し、コーディング開始!

まず、GeoLocationProvider のインスタンスを作って、、、、と、進むが、、、

「あれ、インテリセンスにGeoLocationProviderが出てこない・・・」

しばらくいじるも、解決せず・・・。MSDNの最新リファレンスを見ると、あれ?GeoLocationProviderが見当たりません。どうやら、廃止になったようです・・・。

代わりのクラスは、GeoCoordinateWatcherみたいですね。

コードは、

GeoCoordinateWatcher watcher = new GeoCoordinateWatcher();

watcher.TryStart(false, TimeSpan.FromMilliseconds(1000));

GeoCoordinate coord = watcher.Position.Location;
if (coord.IsUnknown != true)
{
  textBox1.Text = coord.Latitude.ToString();
  textBox2.Text = coord.Longitude.ToString();
}

こんな感じ。本当は、非同期処理をするのが王道ですが、「サンプルコードはシンプルに」がモットーの私としては、同期処理でテスト。

無事、緯度、経度を取得することができました!

とりあえず、今回はここまで。

Comment(0)