Я пытаюсь изменить переменную, когда GPS исправить.Но после API 24 GpsStatus устарел.Поэтому я делаю код для API <24 и API => 24.
class MainActivity : FragmentActivity(), LocationListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
locationManager = this.getSystemService(Context.LOCATION_SERVICE) as LocationManager
locationManager?.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 1f, this)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
val GnssCallback: GnssStatus.Callback = object : GnssStatus.Callback() {
override fun onFirstFix(ttffMillis: Int) : Unit {
super.onFirstFix(ttffMillis)
GPSon = true
}
override fun onStopped() {
super.onStopped()
GPSon = false
}
}
}
}
@Suppress("DEPRECATION")
override fun onStatusChanged(provider: String?, status: Int, extras: Bundle?) {
Log.d("GPS", "GPS on status changed")
when (status) {
GpsStatus.GPS_EVENT_STARTED -> {
}
GpsStatus.GPS_EVENT_STOPPED -> {
GPSon = false
}
GpsStatus.GPS_EVENT_FIRST_FIX -> {
Log.d("GPS", "GPS First Fix")
GPSon = true
}
GpsStatus.GPS_EVENT_SATELLITE_STATUS -> {
}
}
}
}
В onCreate у меня есть код для API => 24, где я использую GnssStatusCallback.Но даже когда я запускаю этот код в API 28, он все равно запускает функцию onStatusChanged ().Вторая проблема заключается в том, что функция onStatusChanged () запускает и показывает сообщение журнала «GPS-статус изменен», но никогда не переключается на коммутатор и не запускает второе сообщение журнала «GPS First Fix».Это не работает на любом API.
Как я могу решить эту проблему?Как получить статус GPS, когда GpsStatus устарел.
Спасибо.