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) } }