2012-09-17 67 views
-1

我有下面的代碼,其中每30 seconds10 metersMost Recent location,但它會不斷接收位置更新和它會在每30秒後收到最近的位置更新。高效的方式獲取當前位置(位置更新)每30秒後,距離爲10米

有沒有更好/有效的方法來做到這一點?

基本上我的要求是每30秒使用Current Location10 meters distance moved。我可以用幾種方法做到這一點,我在想有沒有更好的方法來解決這個問題?那麼Timer類呢?

任何想法都會有很大的幫助。

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

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

    locationListener = new GPSLocationListener(); 

    locationManager.requestLocationUpdates(
      LocationManager.GPS_PROVIDER, 
      30000, 
      10, 
      locationListener); 

} 

下面是實現LocationListener的類。

private class GPSLocationListener implements LocationListener { 
    @Override 
    public void onLocationChanged(Location location) { 
     if (location != null) { 
      GeoPoint point = new GeoPoint(
        (int) (location.getLatitude() * 1E6), 
        (int) (location.getLongitude() * 1E6)); 
     System.out.println(location.getLatitude()+"--"+location.getLongitude()); 

     } 
    } 

    @Override 
    public void onProviderDisabled(String provider) { 
    } 

    @Override 
    public void onProviderEnabled(String provider) { 
    } 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
    } 
} 
+0

每隔30秒獲取gps座標將會更快地耗盡電池電量。 – Lucifer

+0

@Lucifer,那麼理想的時間應該是什麼?由於我需要利用當前位置,因此我應該設置什麼時間間隔? – ferhan

+0

[位置每35秒更新一次並在當前位置繪製圓圈]的可能重複(http://stackoverflow.com/questions/12451722/location-updates-every-35-seconds-and-draw-a-circle-在最當前的定位)。 – trashgod

回答

0

科技怪傑,不知道你到底想要什麼。但是,你所擁有的正是你所描述的你想要的,那就是如果你移動了10米,那麼每30秒得到一次nupdate。操作系統會讓GPS芯片睡眠30秒,一旦醒來,如果你移動了10米,它會進行更新。你有什麼應該完美地工作,那麼究竟是什麼問題?我已經編寫了多個使用位置偵聽器的應用程序,並且每30秒喚醒一次肯定會得到更新。

+0

你確定,它睡了30秒?我不這麼認爲。我在想,除了我之外,是否有任何有效的方法來做這件事。 – ferhan

+0

是的,我確定。您可以通過查看狀態欄中的GPS圖標在設備上消失30秒來非常簡單地進行測試。請注意,只有在沒有其他應用程序請求更新時纔會發生。如果您不需要頻繁請求,GPS芯片可能會被操作系統置於低功耗模式。如果您想每30秒更新一次,您所做的工作效率與您即將獲得的效率相同。 – vkinra

相關問題