为什么即使在不移动的情况下,我的 Android 应用程序中的速度也会波动过高,而在应用程序“GPS 测试”中却显示接近 0?

问题描述 投票:0回答:1

速度甚至可以跳到70公里/小时,我以前从未有过这样的跳。 我认为这与接收不良有关,但另一个应用程序仍然运行良好,也许他们过滤掉了错误的数据,或者他们使用不同的方式来获取位置? 这是我在前台服务中使用的代码:

override fun onCreate() {
    super.onCreate()
    mHandlerThread.start()
    mBroadcastManager = LocalBroadcastManager.getInstance(this)
    createNotificationChanel()
    requestLocationUpdates()
}
@SuppressLint("MissingPermission")
@Synchronized private fun requestLocationUpdates() {
    mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this)
    createLocationRequest()
    val locationCallback: LocationCallback?
    locationCallback = object : LocationCallback() {
        @Synchronized override fun onLocationResult(locationResult: LocationResult) {
                val location = locationResult.lastLocation
                val speedKmph = ((location?.speed?: 0f) * 3.6).roundToInt()
                mSpeed = speedKmph
        }
    }
    mFusedLocationClient.requestLocationUpdates(
        mLocationRequest,
        locationCallback,
        mHandlerThread.looper
    )
}
@Synchronized   private fun createLocationRequest() {
 LocationRequest.Builder(Priority.PRIORITY_HIGH_ACCURACY, 1000)
 .setWaitForAccurateLocation(false)
 .setMinUpdateIntervalMillis(500)
 .build().also { mLocationRequest = it }
}
android gps
1个回答
0
投票

GPS 数据本质上是有噪声的,通常使用 卡尔曼滤波器 或类似的东西进行过滤。不同的 GPS 接收器应用不同数量的过滤,应用程序可以应用自己的附加过滤。

© www.soinside.com 2019 - 2024. All rights reserved.