我正在开发一个android应用程序,我需要确保设备已经达到用lat和lon描述的某一点。我唯一能想到的就是拥有这样的东西:

    Location initLoc = theManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    double lat = initLoc.getLatitude();
    double lon = initLoc.getLongitude();
    MyPoint firstPoint = getPoints().get(0);

    double dist = CalcHelper.getDistance1(lat, lat, firstPoint.getLat(), firstPoint.getLon());

    while(dist > 30){

        initLoc = theManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        lat = initLoc.getLatitude();
        lon = initLoc.getLongitude();
        dist = CalcHelper.getDistance1(lat, lon, firstPoint.getLat(), firstPoint.getLon());

    }

但这会导致程序崩溃。如果你能把我引向正确的方向,我将不胜感激。
让我借此机会再问一个问题。正如我所说的,我对android和gps还不熟悉,而且我还记得,关于如何正确开发使用gps的应用程序,几乎没有文档和信息,我基本上是在盲人环境下工作的。所以我的问题是:
onLocationChanged方法的外观如下:
            public void onLocationChanged(Location location) {

            double lat = location.getLatitude();
            double lon = location.getLongitude();
            MyPoint firstPoint = MainScreen.dataset.getPoints().get(0);

            double dist = CalcHelper.getDistance1(lat, firstPoint.getLat(),lon, firstPoint.getLon());

            if(dist < 10){

                Context context = getApplicationContext();
                CharSequence text = "Start reached. Starting moving on track";
                int duration = 6000;
                Toast toast = Toast.makeText(context, text, duration);
                toast.show();

            }else{

                Context context = getApplicationContext();
                CharSequence text = "Distance until start: "+dist;
                int duration = 6000;
                Toast toast = Toast.makeText(context, text, duration);
                toast.show();

            }

    }

我要做的是让程序确定我何时到达我作为一组点提供的轨道的起点。所以,当我启动程序时,我会得到一个合理的距离估计。问题是,当我开始移动时,距离似乎没有更新,而是在移动50米后更新,它说我只移动了5次。另一方面,当我启动应用程序时,当我距离起点不到10米时,它会正确地检测到它。所以,基本上,当我使用设备移动时,onlocationchanged方法似乎没有给出我现在所处的正确位置。你能告诉我我做错了什么吗?

最佳答案

看看这个,可能正是你所需要的
Proximity Alert

10-07 19:15
查看更多