Windows Mobile 6.x のGPS捕捉を維持してはてなココ・Foursquareを快速に使う

以前、Dorothy BrowserがLocation APIに対応しているので、Dorothy Browserを使えばはてなココも使える(id:iseebi:20100415:p1)と書いたのですが、実のところこの方法で使おうとすると位置情報のつかみが遅くて実用にならないことが多いのです。

iPhoneAndroidはGPS以外にも基地局や周辺のWi-Fiスポットの情報を使って精度が不確実ながらも初期捕捉を高速にしているのですが、Windows MobileはGPSからくる値のみを使用しているため、衛星の測位が完了するまで位置が確定しないからです。*1 *2

今ココなう!廃人のすまべんスタッフ @satoweb によれば、「Windows MobileのGPSは立ち上げっぱなしにして捕捉させ続けるもの」らしいので、すこしスマートな方法を模索したところ、うまくいっているようなのでまとめてみました*3

今回はドライバを突っ込むだけあっていつもより危険な方法かもしれません。くれぐれも自己責任でお願いします。

GPS Mod Driver を導入する

このドライバを導入すると、GPSハードウェアとGPS Intermediate Driverの中間に入って、GPSのパラメータを調整することができます。

導入の際はこなにかしら赤字とか太文字とか大文字とかでかかれててわりと怖いことが書いてあるので、熟読してください。

[GPS] Mod Driver - GeoCaching, Lag, Compass, Cell Tower, Altitude, GPS support. - xda-developers

GPSのKeep Aliveを長くする

Gps Mod Driver を導入すると、GpsModSetupというアプリがスタートメニューに登録されます。このアプリは設定するだけでなく、現在の位置情報とか、衛星の配置を見たりすることもできます。


ここで、左のメニューからSystemを選択して設定画面を開きます。
ここにKeep Aliveというパラメータがあるのですが、これが「GPSを使うアプリケーションがGPSポートを離したあと、GPSハードウェアとの通信をどの程度維持しておくか」という設定になっていて、今回はなるべく維持したいので値をとにかく大きくします。御覧の通りカンストです。

起動時にGPSドライバが開くようにする

あとは、GPSを使うアプリを何かしら起動させて終了させればあとは電池の続く限りGPSを捕捉しつづけてくれるのですが、再起動のたびにそれをするのは面倒ですし忘れます。

そこで、id:tmyt にお願いして、GPSのポートを開くだけのexeを作ってもらいました。*4

OpenGpsIntermidiate.zip

こちらのexeを適当な場所に配置して、ショートカットをスタートアップに置いておけば、起動してすぐにGPSのポートを開けて終了してくれます。

*1:もっとも、AGPSが使えるT-01A/T-01Bとかで、ちゃんと通話SIMが入っていれば基地局支援によりもう少しましなのですが・・・

*2:ちなみに、Windows Phone 7ではMSが捕捉支援サービスを運営するようで、この点が改善される模様です→http://msdn.microsoft.com/en-us/library/ff431800%28v=VS.92%29.aspx

*3:2週間ほどT-01A+GpsModDriverの環境Dorothy Browser+はてなココで試してみて、一発で位置が取れるようになったし、Google Mapsの表示もすぐ点になります

*4:ただし「GPSのハンドル開いて閉じてないからいわゆるハンドルリーク状態のお行儀の悪いアプリケーション」とのことです