たくさんの自由帳
Androidのお話
たくさんの自由帳
文字数(だいたい) : 3278
どうもこんにちは。NewRadioSupporter の更新を配信しようとした時の話。
バックグラウンドで位置情報を取得する権限を使う場合は、追加で申告をしないといけないらしい。
まぁそこそこ危険な権限だよな。。。
どうやらバックグラウンド状態で位置情報にアクセスするには、アプリの審査で追加の申告をしないといけないらしい。のでメモ
アプリが何なのか、とバックグラウンドで位置情報を取得する機能が何なのかを書きます。
使い方を表す動画を提出する必要がある模様。
動画の中で機能やその影響~ ← なんか動画の中に説明も入れろ、みたいな言い方をしてるので、
バックグラウンド位置情報取得をする流れを画面録画をした上で、AviUtlで文字を入れて適当に作りました。数年前はよくニコニコ動画に投稿してたので動画作る環境はあるっちゃある
YouTubeに上げるのを推奨しているらしいのでそうした。別にGoogle Driveの共有でも良いらしい。
限定公開なので動画説明欄とかは適当でいいはず。
限定公開で公開して
PlayConsole へ戻り申告フォームに URL を貼ります。
元々ありましたが、プライバシーポリシーもこれに合わせて更新しました。
アプリ内からも飛べるようにしました。
もしかすると、GitHubのリポジトリ内にあるMarkdownだとリジェクトされるかも(後述します)
おねがいします
プライバシーポリシーが甘いと判断されたらしい。収集する項目 / 利用目的 / 共有の有無をそれぞれ書きました。
あとプライバシーポリシーにアプリの名前をちゃんと書くようにした。
再提出~
????????
え?URL 変えてないんですけど、1回目は見れたのに2回目は見れなくなっちゃったんですか?GitHubのリポジトリ内にあるMarkdownへのリンクをプライバシーポリシーのURLとして使ってたんですけど、もしかしてGitHubのリポジトリじゃだめなの?
仕方ないので自分のドメインのこのサイトに書きました。それなら1回目でリンクが無効って言ってほしかった。。。
いや~でもいままでリポジトリにある Markdownへのパスをプライバシーポリシーに使ったんだけど、なんで今回だけダメだったんだろう。
異議申し立てしても良かったかもだけど、早く配信したかったから飲むことにした。
フォアグラウンドサービスで利用する場合、AndroidManifestで<service>のforegroundServiceType属性をlocationにすることで、アプリがフォアグラウンド(外アプリ利用中)でなくても位置情報が取得できるはずです。

অবস্থান অনুমতি অনুরোধ | Sensors and location | Android Developers
এই ডকুমেন্টটি অ্যান্ড্রয়েড অ্যাপের জন্য বিভিন্ন ধরণের অবস্থানের প্রয়োজনীয়তা বর্ণনা করে, যার মধ্যে রয়েছে ফোরগ্রাউন্ড এবং ব্যাকগ্রাউন্ড অ্যাক্সেস এবং বিভিন্ন নির্ভুলতার স্তর, প্রতিটি ব্যবহারের ক্ষেত্রে উপযুক্ত অবস্থানের অনুমতি কীভাবে অনুরোধ করতে হয় তা ব্যাখ্যা করে।
https://developer.android.com/develop/sensors-and-location/location/permissions?hl=bn
<service
android:name=".BackgroundLocationService"
android:enabled="true"
android:exported="false"
android:foregroundServiceType="location">
</service>class BackgroundLocationService : Service() {
override fun onCreate() {
super.onCreate()
val notification = // 通知を作る
ServiceCompat.startForeground(this, NOTIFICATION_ID, notification, ServiceInfo.FOREGROUND_SERVICE_TYPE_LOCATION) // location
}
}あれ?じゃあバックグラウンド位置情報取得の権限要らない?と思ったんですけど、このアプリは 5G 回線チェッカーなので、foregroundServiceType="location"で良いのかが微妙で、結局この方法も使えなさそう。

Foreground service types are required | Android Developers
This document details the new requirements for foreground service types in apps targeting Android 14, outlining specific types, manifest declarations, permissions, and runtime prerequisites.
https://developer.android.com/about/versions/14/changes/fgs-types-required
R.attr | API reference | Android Developers
https://developer.android.com/reference/android/R.attr
WorkManagerで動かしたいとかがあれば、やっぱりこの権限が必要かも?
電波状態にアクセスするために、位置情報の権限が必要なんですけど、これは何故かというと、CIDやPCIの値が、基地局?に対して一意の値(他と被らない、ユニークな値)らしい???から、おおよその位置が分かるかららしい。はえ~
バックグラウンド 5G 通知機能の修正のついでに。WearOS側に通知が行くようにしました。デフォルトだと通知はサイレントなので、デフォルトにしないといけないかもしれない。
ちなみに、フォアグラウンドサービス起動中通知が、別で出るようになってしまったのですが、これは通知チャンネルの設定から個別に消せるようにしてあります。
実行中の方をオフにしても電波状態の通知は来るようになります。
ちなみに今までなんで来なかったかというと、フォアグラウンドサービスの起動には通知を出さないといけないのですが、この通知に電波状態を表示させてたからでした。
この通知、サービスが動いている間は消せないんですよね。
そして、消せない通知はWearOS側に転送されないんですよね。
なので、サービス起動中通知とは別に、電波状態の通知を出すようにしてみました。電波状態の方は消せるので、WearOSにも出るようになりました。