onLocationChange()没有被调用?计算行进距离-Android

时间:2013-07-10 08:36:31

标签: java android eclipse gps location

我有这段代码:

Location newLocation = new Location(LocationManager.GPS_PROVIDER);
Location oldLocation = new Location(LocationManager.GPS_PROVIDER);
float distanceTravelled=0;

onLocationChanged:

@Override
public void onLocationChanged(Location location) 
{
    oldLocation.set(newLocation);
    startactivity();
    distanceTravelled+=newLocation.distanceTo(oldLocation);
    String stringDistance= Float.toString(distanceTravelled);
    TextView distance = (TextView) findViewById(R.id.textDistance);
    distance.setText(stringDistance);
}

startactivity:

public void startactivity() 
{
    GPSTracker gps = new GPSTracker(Live.this);

    if(gps.canGetLocation())
    {
        double latitude = gps.getLatitude();
        double longitude = gps.getLongitude();
        Toast.makeText(getApplicationContext(), "Your Location is: \nLat: " + latitude + "\nLong: " + longitude, Toast.LENGTH_LONG).show();

        newLocation.setLatitude(latitude);
        newLocation.setLongitude(longitude);    
    }
    else
    {
        gps.showSettingsAlert();
    }

}

GPSTracker是一个单独的类,它获取当前的纬度和经度(工作正常!)。

最新的GPS更新。距离5米和分钟。时间5秒。

以下是我的完整GPSTracker课程: GPSTracker.java

我在清单中添加了三个权限:fine,coarse和internet。

我的问题是onLocationChanged里面的textview永远不会改变。

有什么问题? onLocationChanged是否未被调用或存在一些逻辑错误(距离始终为零)?

如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您的功能是

public void onLocationChanged(Location location) 

但是你没有在函数的任何地方使用该参数。 看起来你应该添加

newLocation.set(location);

在你的第一行功能之后。

目前您正在计算起点与其自身之间的距离,并且始终为0。