Android.How如何在Android中获取有关位置更新的详细信息?

时间:2015-12-29 19:36:45

标签: android

我正在构建使用Google地图的应用程序。我每隔10米或15秒使用代码来请求位置更新。但我想知道,如果提供商无法提供更新一段时间,我是否可以知道上次位置更新与最新位置更新之间的距离。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_maps);
    setUpMapIfNeeded();

    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

    String provider = locationManager.getBestProvider(new Criteria(), false);
    locationManager.requestLocationUpdates(provider, 15000, 10, this);


    Location location = locationManager.getLastKnownLocation(provider);
    if (location != null) {

        onLocationChanged(location);
        if (provider.matches("gps")) {

            Toast.makeText(getApplicationContext(), provider, Toast.LENGTH_SHORT).show();
        }
    }



}

1 个答案:

答案 0 :(得分:1)

如果我理解正确你需要计算2个lat / lng点之间的距离,前一个(你可以存储在全局变量中,或者甚至将它保存在SharedPreferences中)和新的(你刚刚进入的那个) onLocationChanged事件)

下面的代码是我在项目中使用的一个例子,我希望它有所帮助!

String distance = "";
float distanceSort = 0;

float[] results = new float[1];
Location.distanceBetween(currentlatLnglatitude, currentlatLnglongitude,
        oldlatitude, oldlongitude, results);

if (results.length > 0)
{
    distanceSort = results[0];
    if (distanceSort < 1000)
    {
        int roundedDistance = Math.round(distanceSort);
        distance = String.valueOf(roundedDistance) + " m";
    }
    else
    {
        int roundedDistance = Math.round(distanceSort / 1000);
        if (roundedDistance > 50)
        {
            distance = "> 50 km";
        }
        else
        {
            distance = String.valueOf(roundedDistance) + " km";
        }
    }

}