我正在开发一个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