API Level 24 (Android 7.0)で追加された、GnssStatusの取得方法をメモ。
manifest
android.permission.ACCESS_FINE_LOCATION
MainActivity
override fun onResume() {
super.onResume()
// LocationManagerの取得
locationManager = getSystemService(Context.LOCATION_SERVICE) as LocationManager
// ユーザが位置情報のアクセスを許可しているか
if (ContextCompat.checkSelfPermission(this@MainActivity,
android.Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
//GnssStatusCallbackの登録
locationManager.registerGnssStatusCallback(gnssCallback)
} else {
// 位置情報の取得が許可されていない
// TODO: requestPermissionsでユーザの許可をもらう
}
}
private val gnssCallback: GnssStatus.Callback = object:GnssStatus.Callback(){
override fun onSatelliteStatusChanged(status: GnssStatus?) {
status?.let {
val satelliteCount = it.satelliteCount
// .....
}
}
}
override fun onPause() {
super.onPause()
gnssCallback.let {
locationManager.unregisterGnssStatusCallback(it)
}
}