チュートリアル - 端末位置情報の自動更新
目次
1. 概要 2. Android端末位置情報の追跡手法 3. 本アプリ主画面の構成変更 4. Android端末の位置情報を扱うための設定 4.1 Androidシステム側の設定 4.1.1 システム設定における位置情報設定画面への移動 4.1.2 高精度の位置情報取得を可能とする設定(Android 8) 4.1.3 高精度の位置情報取得を可能とする設定(Android 9以上) 4.2 アプリケーション側の設定 4.2.1 本アプリにおける位置情報設定画面への移動 4.2.2 動作モードごとの設定方法
1. 概要
本アプリで収集したセンサー情報はJSON形式に整形されて配信されます。 このJSONデータにはデバイス情報としてAndroid端末の地理的な位置情報(緯度、経度)を任意で設定できるようになっています。
{
"device": {
"sysinfo": {},
"userinfo": {},
"location": {
"latitude": "139.767120",
"longitude": "35.681236"
}
},
"sensors": []
}
本アプリが動くAndroid端末を特定の場所に固定して使う用途であれば、 既知の位置情報を静的に設定する方法で何ら問題ありません。 しかし同Android端末を移動体に載せて使う場合、刻々と変化する端末位置を継続的に監視しつつJSON出力時に最新の位置情報を反映する方式が望ましいです。 本書では、後者の目的を実現するための本アプリの使い方、および所用のAndroid端末のシステム設定方法を紹介します。
OSのバージョン違いにより画面構成やシステムメッセージの文言表現が多少変わるかもしれません。 お手元のAndroid端末の動作環境に合わせて適宜読み替えてください。
2. Android端末位置情報の追跡手法
Androidシステムでは端末の位置情報を追跡する機構がいくつか用意されており、適当な契機でユーザアプリケーションに通知可能となっています。
本アプリの実装では下記「GPS
、FLP
」の何れかの方式をユーザが指定し、位置情報を自動更新できるようにしています。
- GPS(Global Positioning Satellite)による測位
- GPS受信信号から算出した位置情報[1]を取得します。
- 上空にGPS衛星を見通せない場合は位置情報更新が止まります。
- アプリケーション起動時にGPS機能が無効化されていた場合や屋内にしばらくいた場合など、動作状況によっては最初の位置情報を得るまで時間がかかることがあります。
- FLP(Fused Location Provider)による測位
- Google Play 開発者サービス が提供する「融合された位置予測プロバイダ」[2]から位置情報を取得します。
- 複数の情報源(
GPS
,NET
,Bluetooth
,…)から最善と推定される位置情報となりますが、測位制度は情報源により異なります。 - いくつかの都市部では、
Google Play 開発者サービス
による位置補正を利用したGPS測位精度向上を見込めます[3]。
〈参考〉
3. 本アプリ主画面の構成変更
本アプリの設定画面「センサー情報」にて端末位置設定を有効に設定すると、
動作モード(固定値
、あるいはGPS
やFLP
による自動取得)ごとの情報表示欄が主画面下部に追加されます(図中ラベル2
)。
端末位置を自動取得する動作モードの場合、位置情報取得サービス稼動中であることを示す「羅針盤」アイコンが表示されます(図中ラベル1
)。
- 画面(a)は端末位置として固定値を設定する場合の表示例です。
- 本アプリの設定画面でユーザが指定した緯度経度がそのままJSONに出力されます。
- 画面(b)はGPS経由で取得した位置情報を自動設定する場合の表示例です。
- 端末移動による変位が閾値を超えた場合に位置情報が更新されます。なおJSONに出力されるのは緯度経度のみです。
- 画面(c)はFLP経由で取得した位置情報を自動設定する場合の表示例です。
- 端末が実際に移動しなくても、位置情報は約5秒間隔で更新されます。なおJSONに出力されるのは緯度経度のみです。
4. Android端末の位置情報を扱うための設定
Androidシステムにおいて端末の位置情報はプライバシー保護対象と考えられています。 任意のアプリケーションがこれにアクセスするためには、次の各項目の要求条件を同時に満たす必要があります[1][2]。
- システム設定
- デバイス全体として位置情報を有効にするか?
- 位置情報の精度をどの程度に制限するか?
- アプリケーション個別の実行時権限設定
- 当該アプリケーションに位置情報へのアクセスを許すか?
〈参考〉
4.1 Androidシステム側の設定
4.1.1 システム設定における位置情報設定画面への移動
システム設定画面(a)のうち位置情報関連の設定項目に着目してください。 上記「1 -> 2」の順でメニュー項目を選択し、位置情報設定用の画面(c)に移行します。 Androidシステムバージョンにより画面構成やメニュー構成が異なる可能性はありますが、最終的には位置情報設定用の画面に到達してください。
4.1.2 高精度の位置情報取得を可能とする設定(Android 8)
本アプリで位置情報の自動更新を有効とするには、以下の3項目を指定どおりに設定する必要があります。 ここではAndroid8での動作イメージを示します。
項番 | 設定項目 | 値 | 備考 |
---|---|---|---|
1 | Location | ON | |
2 | Mode | High accuracy | Device only も可 |
3 | App-level permissions | Sensor アプリケーションをON |
システム設定項目は全てのアプリケーションに適用されるものであり、本アプリケーション実行時に必ずしも上記の通りになっていない可能性があります。 本アプリ実行後に上記システム設定項目が変更される可能性があるためです。 その場合、上記の各項目に対応して設定変更を促すダイアログが表示されます。 お手数ですが改めて上記の設定状態を満足するようにしてください。
4.1.3 高精度の位置情報取得を可能とする設定(Android 9以上)
Android9以降は、従来の位置情報モード選択が廃止され、代わりに 新しいメニュー項目Google Play 開発者サービス にていくつかの位置情報サービスをまとめて扱うようになりました。 ここではGoogle 位置情報の制度 に着目してください。
本アプリで位置情報の自動更新を有効とするには、以下の3項目を指定どおりに設定する必要があります。
ここではAndroid 9
での動作イメージを示します。
項番 | 設定項目 | 値 | 備考 |
---|---|---|---|
1 | Location | ON | |
2 | App-level permissions | Sensor アプリケーションをON |
|
3 | Location services | Google Location Accuracy をON |
初期状態はAdvanced に隠れているのでこれを展開する |
システム設定項目は全てのアプリケーションに適用されるものであり、本アプリケーション実行時に必ずしも上記の通りでない可能性があります。 本アプリ実行後に上記システム設定項目が変更される可能性があるためです。 その場合、上記の各項目に対応して設定変更を促すダイアログが表示されます。 お手数ですが改めて上記の設定状態を満足するようにしてください。
〈参考〉
Android 8、および9以降の位置情報設定内容の対応関係は以下の通りです。
Android 8 | Android 9+ |
---|---|
Location: On/Off | Location: On/Off |
Mode: Battery Saver | N/A |
Mode: Device Only | Location: On, Google Location Accuracy: Off |
Mode: High Accuracy | Location: On, Google Location Accuracy: On |
4.2 アプリケーション側の設定
4.2.1 本アプリにおける位置情報設定画面への移動
本アプリの設定画面(a)のうち「Sensor」関連の設定項目に着目してください。 上記「1 -> 2」の順でメニュー項目を選択し、位置情報設定用の画面(c)に移行します。 初期状態では位置情報設定は無効化されています。
4.2.2 動作モードごとの設定方法
位置情報を利用する場合、まずはグローバルスイッチ(1)を有効に設定してください。
Android端末の位置を固定して使うのか、あるいは移動しながら使うのかにより以降の設定方法が分かれます。
- 位置情報の静的設定(画面d)
- Android端末の設置場所を固定しつつ位置情報を付加する運用時の設定です。
- 緯度経度の入力欄(2a)の各項目を選択し、適切な値を設定してください。
- 緯度と経度は両方同時に設定してください。
- 本モードでは自動更新スイッチ(2b)は無効としてください。
- 位置情報の自動更新(画面e)
- Android端末を移動しながら位置情報を自動的に更新する運用時の設定です。
- 自動更新スイッチ(2b)を有効としてください。
- 本モードでは緯度経度の入力欄(2a)に設定された値は無視されます。
- 動作環境によっては位置情報の情報源(
GPS
、FLP
)を選択できます。ご利用のAndroid端末で
FLP
を利用できない場合もあります - ロケーションプロバイダ項目(3)を選択し、ダイアログ(画面f)にて希望のものを指定してください。