为啥在 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 - Java/Kotlin 中使用任何服务?