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。
如何解决此问题?不建议使用GpsStatus时如何获取GPS状态。
谢谢。