地図ロイドの現在位置機能(GPS)がHTC Desire(Android 2.1)でうまく動かないらしいということで,いくつか試行錯誤したメモです.ただし,まだ完全には解決していないようです.
DesireのGPS取得での試行錯誤LocationManager.getBestProviderの不具合GPSのLocationProviderを取得するのに, LocationManager.GPS_PROVIDERを直接使わずに, LocationManager.getBestProvider()を使って「最も位置が正確なプロバイダー」を取得していたのですが, この方法では,DesireでGPS_PROVIDERが取得できなかったようです.以下のAndroidの不具合だと思われます. 回避策は簡単で,そんな回りくどいことをせずにLocationManager.GPS_PROVIDERを直接使えばいいだけです. もちろん当然,実際に有効かどうかをLocationManager.isProviderEnabled()でチェックしてから使う必要はあります. この対応で,GPSを使ってくれる(GPSマークがピコピコする)ようにはなったのですが... onLocationChangedが発生しない?どうも,
この問題は解決できていないのですが,以下の対応である程度改善はしているようです.
ただし3.については,少なくとも1.6ではGPS検索中は自動的にPARTIAL_WAKE_LOCKを取得しているようなので, いまいち腑に落ちないところではあります.(かといって他の2点も,全然腑に落ちないのですが...) まぁ,結果オーライという感じです. HTC Desireの再現する実機が手元にあれば,もう少し切り分けできるのですが,無いので実際に何が効果があるのかわかっていない状況です. これ以上改善するには,一般的なGPSトラッキングアプリのように,GPSを裏で起動しっぱなしにするぐらいしか思いつかないのですが, 地図ロイドの電池節約の方針とは合わないので,悩ましいところです. 参考 |