我正在開發Android應用程序,我需要確保設備已經達到了經緯度和經度描述的某個點。我能想到的唯一的事情就是有這樣的事情:Android gps:如何檢查某個點是否已經達到?
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方法似乎並沒有給我現在所處的正確位置。你能告訴我我可能做錯了什麼嗎?
如果你沒有崩潰,你可以找到在您的logcat堆棧跟蹤有用的信息。而對於進一步的錯誤分析,我們也需要。 – mreichelt 2011-03-10 22:13:16
感謝您的回答:mreichelt:其實它不會崩潰,我的壞,只是停止響應和凍結。我想,基本上,使用while()循環並請求位置更新不起作用。我只是在onLocationChanged方法中使用if語句。 – Petar 2011-03-10 23:35:11