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

时间:2014-07-24 08:08:11

标签: android locationmanager locationlistener

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

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

NETWORK_PROVIDER根据您的网络提供您的位置,如果您使用的是移动网络或您连接的路由器,则连接到哪个手机信号塔,因此如果您的NETWORK_PROVIDER的手机信号塔或路由器的位置不变它给出0

答案 2 :(得分:1)

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

答案 3 :(得分:0)

参考此处:Determining the speed of a vehicle using GPS in android

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

与GPS提供商相比,网络提供商的lat long的准确性非常低,并且不够,不应该用于计算速度。