[Android] GPSログをテキストで保存、複数の Runtime Permissionの設定

Runtime Permissionを設定する必要があるものは、時として複数同時に必要であったりします。ここではGPSのログをExternal Storageに保存するケースで考えてみます。
 
multi permissions 01 - [Android] GPSログをテキストで保存、複数の Runtime Permissionの設定

Android Studio 3.1
Android 8.1

 



Multi Runtime Permissions

 
GPSは ACCESS_FINE_LOCATION のパーミッションが必要です。また外部のストレージに書き込むときには WRITE_EXTERNAL_STORAGE も必要となります。
 
この2つを順番に個別に確認しようとしてもうまくいきません。ユーザーの許可を得る場面で複数のパーミッションを確認できるようにします。
 

 

GPS と 外部ストレージ書き込み許可

 
例えば、「1/2」で位置情報へのアクセス許可を尋ねます。
 
multi permission 02b - [Android] GPSログをテキストで保存、複数の Runtime Permissionの設定
 
その後、「2/2」でメディアファイルへのアクセス許可を確認するダイアログが表示。
 
multi permission 03b - [Android] GPSログをテキストで保存、複数の Runtime Permissionの設定
 
このような形でパーミッションの許可を取得するようにコードを記述していきます。
ここでどちらかを「許可しない」とすると、これ以降この場面では許可しなかったパーミッションだけを確認するようにします。

 

requestPermissions

 
複数のパーミッションを扱うには、配列あるいはArrayとして例えばPERMISSIONS[]を作り requestPermissions() をコールします。
 

 

 

onRequestPermissionsResult

 
onRequestPermissionsResult から結果を受け取りますが、permissions[]のインデックスに応じてgrantResults[]が、拒否ならば「-1」、許可すれば「0」が返ってきます。それぞれの結果を確認して、全て許可されない場合はユーザーに拒否された機能が使えないと明示して終わります。
 

 

サンプルコード

 
基本的には、GPS パーミッションを考慮して実装する で説明したパーミッションを複数の Runtime Permission に対応させて、フォアグランドでGPS測位するように改変したものです。
 
AndroidManifest.xml

 
MainActivityではパーミッションの確認をします。
許可を確認できるとLocationActivityへ遷移します。
許可できない場合はTostを投げますが、アプリとしてはそのまま続けていきます。(正常には動きませんが)
 
MainActivity.java

 
ここから位置測定のコードになります。
「Start」ボタンで測位と書き込みを実行することができ位置情報を取得すると外部ストレージに保存します。
「Log」ボタンで保存した履歴を表示させます。「Reset」で履歴を消し、GPSも止めます。
 
保存先は Environment.getExternalStorageDirectory().getPath() の直下です。また、MinTime と MinDistance の設定は適宜合わせてください。
 
(注意)Backgroundでの制約に対応していないのでシステムから停止させられる可能性があります。
 
LocationActivity.java

 
次に、外部ストレージへの書き込み、読み出しのクラスを作ります。
 
ExternalStorageRW.java

 
レイアウトはこのようになります。呼び出した履歴はスクロールで表示させます。
 
activity_main.xml

 
リソースです
strings.xml

 
multi permissions 01 - [Android] GPSログをテキストで保存、複数の Runtime Permissionの設定
 
関連ページ:

 

References:
LocationManager | Android Developers
Criteria | Android Developers
Runtime Permissions | Android Developers
Location Strategies | Android Developers
Location | Android Developers

誤字脱字、意味不明で分からにゃイ、
などのご意見はこちらから mailフォーム

ブックマークしておくと便利です このエントリーをはてなブックマークに追加


 


ページのトップへ戻る




シェアする

  • このエントリーをはてなブックマークに追加

フォローする