location.getspeed()更新

Kry*_*olc 2 gps android location

我有一个小问题.我在location.getSpeed()方法上找到了一个onLocationChanged()方法,.getSpeed()当我呆在同一个地方时,通常不会更新/改为0km/h.

我应该在哪里找到一种location.getGpeed()方法,当我留在原地时更新显示0km/h?

另一个问题.这是我的locationListener:

private final LocationListener locationListener = new LocationListener() 
    {public void onLocationChanged(Location location) {     
    boolean var = false;
    float distance;

        if (firstRun) { distance=0; firstRun=false; }
        else
        distance = location.distanceTo (startLocation);
        Tspeed.setText("0km/h");


        if (location.getSpeed()!=0) 
        {
            Tspeed.setText(""+(location.getSpeed()*3600/1000 +"km/h")); 
        }
        else
        {
            Tspeed.setText("0km/h");
        }


        sAllDistance += distance;  // 
        startLocation=location;
        Tdistance.setText(""+(int)SAllDistance+" m");

    }
Run Code Online (Sandbox Code Playgroud)

问题是:当LocationManager得到修复时,第一个AllDistance返回的location.distanceTo()是±50米.

我该如何解决?

Bra*_*raj 5

实际上,GPS不会一直提供准确的信息.即使你住在同一个地方,有时候,纬度和经度也会有所不同.我认为这取决于minTimeminDistance你提供requestLocationUpdates(...)方法.

无论如何,一旦尝试改变这些值,如下所示.

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 
             1000L(minTime), 2000.0f(minDistance), myLocationListener);
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.

编辑:

你可以做的一件事是,根据文件,location.hasSpeed()返回true如果此修复程序包含速度信息,false否则.当你呆在同一个地方时,false我猜它会回来.

基于此,您可以执行诸如设置值textView等操作.

我没试过,但你可以尝试一次.