気まぐれSE日記

地方でエンジニアしてます

VX580 ICS ネットワーク(wifi)位置情報が取得できない件【GoogleMapのみ解決】


onda VX580WPをICSにしてからwifiの位置情報が全く取得できない件で悩んでいてシステムアプリの「NetworkLocation.apk」いろいろ入れ替えたりしていたら偶然位置情報が取れたときがありました。

ただ、そのまま再起動したら元の位置情報が取れない状態に戻ってしまいました。どうも、GPSがあるかないかの判定が悪さしている気がするんですが



この機種は元々GPSなんてないのにあるような設定がしてあってそのあたりなのかなと思いましたが、「GPS無効」にしてみてもやっぱりダメ。


なんなんだろう


試したこと
NetworkLocation.apkはondaのICSファームには入っていないのでネット上を探して入手したバージョンを入れてみた。

  • NetworkLocation.apk バージョン1.? (android 2.3.3)→△(偶然動いた?)
  • NetworkLocation.apk バージョン1.1.x (android 4.0.1)→NG
  • NetworkLocation.apk バージョン1.1.08 (android 4.0.3)→○(後日動作確認しました)


偶然位置情報が取れて動いたのは、GoogleMapのみで他のアプリケーションは取れないままでした。


追記:
NetworkLocation.apkをもっと古いバージョン1.0.0(android 2.3.x? Froyo?の頃)に置きかえたら動くようになったようです。ただし、GoogleMapとGoogleSkyMapだけで他のGenieWidgetやMapionなどのアプリはやっぱりNGでした。

また、原因がよくわからないのですが、なぜか新潟県ではエリア外で動作しないはずのradikoが動いてラジオが聴けました。android2.3の頃は選局画面すら出なかったのになんでだろう?エリア的にはFM東京J-WAVEが聴けるので関東になっているみたいです。単純にradikoのバージョンが上がって聞けるようになったのかもしれません。
ま、新潟県のFMPortもradiko対応したら完璧なんだけど。


ネットはイーモバイル接続ですが現在値は正確に出てますね...。他のアプリは結局の所GPSの位置情報しか取得しないんですかね。


追記2(2012/2/6):
よく確認したら、GoogleSkyMapはwifi位置情報取得NGでした。radikoが聞けたのは擬似的な位置情報が入っていたから奇跡的に聞けただけだったようで、今では何度やってもエリア外というエラーになってしまい二度と聞けない状態です。


その後は、他のwifi位置情報を取得するアプリをいろいろと試して居るんですが全く取得できていません。いったいなんでなんだ??



ここからは私の推測ですが、なぜGoogleMapだけがwifi位置情報取得に成功するか?
デバッガーで見る限り、「com.google.android.apps.maps:NetworkLocationService」というGoogleMap専用の「LocationService」なんてのが起動していて他のアプリとは違う方法で取得しているような感じがします。ただ、「NetworkLocation.apk」が無いとこのプロセスも起動しないのでなんらかの関係を持っているのは間違いないと思います。

他のアプリはandroidがICSになったことで「NetworkLocation.apk」をうまく呼び出せないんでしょうか...?位置を取得した瞬間に落ちるアプリをデバッガーで見る限り、こんなエラーが出ているので

java.lang.IllegalArgumentException: provider=network

「LocationProvider=network」 でnetworkから位置を取得する所まで行っているのに引数が正しくないとかで落ちているようです。せめて落ちないようなコーディングして欲しいものですが..


追記3:
radikoイーモバイル接続だと聴けて家のフレッツ光だと聴けなかったので、プロバイダのIPでロケーション判定してるような感じがします。どうもイーモバイル接続してるとradikoではロケーションが東京?になる感じですね。

というわけで、今のところICSで位置情報がまともに動作するのはGoogleMapとradikoだけかな?


追記4:
後日、VX580の403ファームにアップした後にNetworkLocation.apkをインストールしても位置情報が取れなくなってハマッタのですが.........。設定の初期化もしくは、設定からタブレット端末のリセットをすると位置情報が取れるようになりました。(アプリなどの設定データが消えるのでバックアップ等行ってからした方が良いです)