bookmark_border【Kotlin】GnssStatusの取得【Android】

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