2015-04-30 69 views
0

我在寫一個應用程序,根據用戶地理位置執行一個方法。我正在使用一個實現LocationListener的Activity。位置緯度和經度存儲在數據庫中,並且每當用戶進入當前位置的範圍內時,與存儲的位置相比,就執行一個方法。Android的位置距離近在咫尺

我的問題是,只要用戶在接近處移動,方法startTimer(),startTimer()就會執行。我希望在用戶輸入區域時執行startTimer()一次,並在用戶退出區域時執行stopTimer()。

到目前爲止,我得到了這一點,但似乎只離開該區域時的工作:

@Override 
public void onLocationChanged(Location location) { 
    longitude = location.getLongitude(); 
    latitude = location.getLatitude(); 
    Log.i("", "Latitude: " + latitude); 
    Log.i("", "Longitude: " + longitude); 
    if(activities != null) { 
     for (Activity activity : activities) { 
      Location newLocation = new Location(provider); 
      newLocation.setLongitude(activity.getLongitude()); 
      newLocation.setLatitude(activity.getLatitude()); 

      if(location.distanceTo(newLocation) > 15) { 
       activity.setInProximity(false); 
       stopTimer(activity.getId()); 
      } 
      if (location.distanceTo(newLocation) <= 15 && !activity.isInProximity()) { 
       activity.setInProximity(true); 
       startTimer(activity.getId()); 
      } 
     } 
    } 
} 
+0

你可以使用一個布爾variabile的迭代活動類的私有布爾數據成員要記住這一點,不是嗎? – optimusfrenk

回答

1

它看起來像你幾乎沒有/想已經實現了這一點 - 只是錯過了在你的函數調用第一個if語句(也應該是一個if/else語句)

@Override 
public void onLocationChanged(Location location) { 
    longitude = location.getLongitude(); 
    latitude = location.getLatitude(); 
    Log.i("", "Latitude: " + latitude); 
    Log.i("", "Longitude: " + longitude); 
    if(activities != null) { 
     for (Activity activity : activities) { 
      Location newLocation = new Location(provider); 
      newLocation.setLongitude(activity.getLongitude()); 
      newLocation.setLatitude(activity.getLatitude()); 

      if(location.distanceTo(newLocation) > 15 && activity.isInProximity()) { 
       activity.setInProximity(false); 
       stopTimer(activity.getId()); 
      } 
      else if (location.distanceTo(newLocation) <= 15 && !activity.isInProximity()) { 
       activity.setInProximity(true); 
       startTimer(activity.getId()); 
      } 
     } 
    } 
} 

其中

void setInProximity(boolean status) 

boolean isInProximity() 

應該是getter/setter方法給您通過

+0

謝謝,完美無缺! – amofasser

相關問題