【最寄り駅サーチ】位置情報取得のパーミッション
(2017.2.22追記)
以下の内容は結局原因が違っていたことが判明したので、参考にしないでください。
最寄り駅サーチv1.5.9において追加したパーミッション ACCESS_COARSE_LOCATION について。
Androidで位置情報を使ったアプリケーションを作るときにはパーミッションの設定が必要で、アプリケーションのマニフェストファイルに以下を追加する。
GPSを利用する場合
<uses-permission android:name=”android.permission.ACCESS_FINE_LOCATION”/>
ネットワーク(Wi-Fi , 基地局のアンテナなどの位置情報)を利用する場合
<uses-permission android:name=”android.permission.ACCESS_COARSE_LOCATION”/>
いくつかのサイトでは「ACCESS_FINE_LOCATIONはACCESS_COARSE_LOCATIONを含むから入れなくてもいい」という記載があったので、実際入れなくてもネットワークによる位置取得ができる。
今までの最寄り駅サーチもACCESS_FINE_LOCATIONのみだった。ところが、ACCESS_COARSE_LOCATIONを入れる、入れないで測位される位置情報が若干違うのではないか?という疑問がわいてきた。実際に地下鉄に乗って測位してみると、ACCESS_COARSE_LOCATIONを入れたアプリと入れないアプリとで測位した位置情報が異なることがあるからだ。
今までは「取得結果がアプリによって異なるのは、アプリによって取得タイミングが異なるからなんだろう」と思っていた。
ところがある雨の日、JR中央本線・ホリデー快速ビューやまなし乗車中最寄り駅サーチが全く位置取得をしにいかなくなった。GPS StatusアプリでもGPSは全く機能していないにもかかわらず、別のアプリでは位置情報を測位し続けていた。これはどういうことだろうか。そこでいろいろ調べたところ、測位し続けているアプリと最寄り駅サーチとの違いは ACCESS_COARSE_LOCATION の有無ということがわかった。
そこで最寄り駅サーチにパーミッションを追加し、試しに東京メトロ丸ノ内線(池袋~大手町)と東西線(大手町~南砂町)で測位したところ、他のアプリと測位タイミングと場所が一致した。
偶然なのかどうかわからないが、数駅にわたって一致したのであれば「パーミッションが同じならば測位する情報も同じ」ということなのだろう。
他のアプリとの連携に使われている利用者が圧倒的多数なので、v1.5.9からパーミッション追加することにした。
但し試したのはたかだか10駅程度なので、まだまだアプリによって挙動が異なる地域や端末が存在するのかもしれない。このあたりは未知数なので、もし異なってしまった場合は「端末からやってくる情報がそうなのだからどうしようもない」としかいえない。