为啥在 android 中使用 NETWORK_PROVIDER 时 location.getSpeed() 总是返回 0?

Posted

技术标签:

【中文标题】为啥在 android 中使用 NETWORK_PROVIDER 时 location.getSpeed() 总是返回 0?【英文标题】:why location.getSpeed() always returns 0 while using NETWORK_PROVIDER in android?为什么在 android 中使用 NETWORK_PROVIDER 时 location.getSpeed() 总是返回 0? 【发布时间】:2014-09-15 16:32:13 【问题描述】:

在 GPS_PROVIDER 中使用 location.getSpeed() 工作正常,并获得当前速度。但是在 NETWORK_PROVIDER 中它总是显示速度 0。我只是在设备而不是模拟器中测试。

【问题讨论】:

【参考方案1】:

Gps 提供商提供 5-15 米内的位置精度,因此当您调用方法 location.getSpeed() 时,它会给出正确的位置,而网络提供商没有给出准确的位置,它会给出 100 米内的位置,所以当您调用 location.getSpeed 时() 那么它不知道你在 100 米之间的准确位置。

【讨论】:

我已经使用了它,它工作正常,但现在只有它总是显示为 0 因为它的速度是在您的纬度和经度坐标发生变化时计算的,但在网络提供商中它保持不变,您将从同一塔获得纬度和经度,因此它不会给出准确的纬度、经度、准确性和障碍,所以速度取决于这个因素。 只有在准确度至少优于 10 m 时才会得到 getSpeed() 值(不是 100% 确定这个值)l【参考方案2】:

在 NETWORK_PROVIDER hasSpeed() 中返回 false,因此您的 location.getSpeed()=0。 您只能将 getspeed() 用于 GPS_PROVIDER。

【讨论】:

完全正确的答案。我想知道直到现在还没有人对此表示赞同!!!我赞成这个【参考方案3】:

NETWORK_PROVIDER根据您的网络提供您的位置,如果您在移动网络上,您连接到哪个蜂窝塔,如果您使用wifi,则连接到路由器,所以如果您的NETWORK_PROVIDER的蜂窝塔或路由器的位置没有改变它给出了 0

【讨论】:

我已经使用了它,它工作正常,但现在只有它总是显示为 0【参考方案4】:

参考这里:Determining the speed of a vehicle using GPS in android

AFAIK,可以/应该仅使用 GPS_PROVIDER 计算速度。网络提供商数据取决于运营商网络、信号塔、信号强度等一些参数。因此,它不是确定速度的正确方法。此外,由于它基于静态塔,因此它将返回相同的纬度和更长的距离。

与 GPS Provider 相比,NETWORK Provider 的 lat long 精度非常低,不够,不应用于计算速度。

【讨论】:

以上是关于为啥在 android 中使用 NETWORK_PROVIDER 时 location.getSpeed() 总是返回 0?的主要内容,如果未能解决你的问题,请参考以下文章

为啥在 android 中使用 NETWORK_PROVIDER 时 location.getSpeed() 总是返回 0?

有没有办法在隧道中获取当前位置

为啥蓝牙在android中需要DBUS通信方式?

为啥我会收到“服务未注册”异常,即使我没有在 Android - Java/Kotlin 中使用任何服务?

为啥 apk 仅在 Android 10 的发布版本中中止?

如何理解为啥android无法安装apk文件?