Google Play Serviceを利用する新位置情報取得APIについて まとめ
AndroidのGoogle Play Serviceを利用する位置情報APIについて、そこそこ実装できてきましたので、少しまとめておきたいと思います。
AndroidのGoogle Play Serviceを利用する位置情報APIは、特に名前もないのですが、以前のLocationManagerを使う位置情報取得の流れとは、さまざまな点で変わりました。
fused location providerと呼んでいる人もいますが、これはプロバイダの名前が、fused location providerというものになったというわけで、一部の機能だけのことです。
位置情報の精度
これは弊社で試してみたところの実感なので、厳密に計測したわけではありません。
位置情報の精度は、GPSで計測できるものはそれほど変わりませんね。
多少よくなったか、という感じですが、相変わらず、機種による差が大きいようです。
大きく改善されたのは、Wi-fiによる位置情報です。
ぶれている時は、相変わらず大きくぶれていますが、Wi-Fiの位置情報だけで、ほぼ正確な位置情報を示す場合も増えました。
基地局の情報も位置情報特定に役立てるようになったので、それが効果を発揮しているのでしょうか。
バッテリーの持ち
これは非常によくなりました。
弊社で、Smart動態管理という、位置情報を一定間隔で送信するというアプリをリリースしていますが、この新APIに変更したところ、以前は充電なしでは5時間ぐらいしか持たなかったところ、今は18時間ほど持つようになりました。(利用した端末はGalaxy S3a)
これは大きな改善ですよね!
サンプル
Googleさんがサンプルを配ってくれています。
大変ありがたいことですね!
下記からダウンロードできます。
下記のURLの、Dowonload the sampleという青いボタンをクリックして、LocationUpdates.zipをダウンロードします。
http://developer.android.com/training/location/retrieve-current.html
仕組み
以前は
LocationListener
インターフェースを実装して作っていましたが、今度から
GooglePlayServicesClient.ConnectionCallbacks, GooglePlayServicesClient.OnConnectionFailedListener, LocationListener
を実装します。
1番目のLocationListenerと2番目のLocationListenerは、名前はほぼ同じですが、中身が違うので、これは注意が必要です!!
旧LocationListenerはandroid.location.LocationListenerですが、
新LocationListenerはcom.google.android.gms.location.LocationListenerです。
私自身はこれにちょっとハマりましたので、みなさんは気をつけてください。
さて、肝心の実装方法です。
Google Play Serviceを利用する新位置情報取得APIについて 実装方法