Android LocationServices getLastLocation将速度返回为0

Android LocationServices getLastLocation将速度返回为0,android,gps,location,location-client,location-services,Android,Gps,Location,Location Client,Location Services,它被连接起来,我可以得到坐标的纬度和经度,但是当我做下面的代码时,速度=0,为什么它不能从位置得到速度 @Override public void onLocationChanged(final Location location) { Log.i("","geof is s onLocationChanged ENTERED"); if (LocationServices.FusedLocationApi.getLastLocation(mLocationClient) !

它被连接起来,我可以得到坐标的纬度和经度,但是当我做下面的代码时,速度=0,为什么它不能从位置得到速度

 @Override
public void onLocationChanged(final Location location) {

    Log.i("","geof is s onLocationChanged ENTERED");
    if (LocationServices.FusedLocationApi.getLastLocation(mLocationClient) != null) {

         locEnd = location;
         Log.i("","geof is s speed of locend:" + location.getSpeed());
    }
}
这永远是我的回答:

03-31 17:43:57.227  31463-31463/nl.hgrams.passenger I/﹕ geof is s speed of locend:0.0
这是我的权限:

   <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.LOCATION_HARDWARE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="nl.hgrams.passenger.C2D_MESSAGE" />

我不确定这是否是您想要的:


但是getSpeed默认返回0.0是“正常”的,因为您的位置没有速度(如文档中所示)。

您究竟为什么在
onLocationChanged上使用
getLastLocation
,您已经获得了位置对不起,我的错,我也编辑了代码,将检查now@tyczj我也得到了0.0作为速度,即使我直接取位置,位置对象没有速度是很正常的(也是很常见的),也就是说,在这种情况下它将返回0.0。我不知道为什么需要它,但通常你应该适当地处理0.0的情况。我需要发送到服务器0,如果我的位置是静止的,速度,如果>0,如果位置没有速度,那么我应该发送-1。它总是0。即使我在车上。因此我要接受这个答案,因为我已经解决了这个问题。我检查了hasSpeed(),结果返回false,我正在测试的手机出现问题,无法正常工作。我知道你问这个问题已经一年多了,但我一直在尝试另一个人的建议:谁知道,可能会帮助其他人。