2013-07-16 40 views
0

我有這樣的代碼:的Android的LocationManager最後位置

if (item.getItemId() == R.id.tempMap) { 
     locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     Location location = null; 
     if(locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)||locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){ 
     Criteria criteria = new Criteria(); 
     criteria.setAccuracy(Criteria.ACCURACY_FINE); 
     provider = locationManager.getBestProvider(criteria, true); 
     location = locationManager.getLastKnownLocation(provider); 
     locationManager.requestLocationUpdates(provider, 20000, 1, this); 
     if (location != null) { 
      Log.e("PROVIDER SCELTO", provider); 
      onLocationChanged(location); 
      Log.e("LATITUDE", String.valueOf(latitude)); 
      Log.e("LONGITUDE", String.valueOf(longitude)); 

和:

public void onLocationChanged(Location location) { 
    // TODO Auto-generated method stub 
    latitude = location.getLatitude(); 
    longitude = location.getLongitude(); 
} 

但最後GPS點位,這回是最後一點後,我用「谷歌地圖導航」。所以,如果我不使用gm導航器,經度和緯度不會更新。

爲什麼?

謝謝

回答

0

位置修復程序需要時間等待,直到一個很好的修復程序recived這個檢查修復的時間,並設置位置僅在修補程序是一個時間週期內,如果你不檢查修補程序的一次將提供最後一次修復時間爲

public void onLocationChanged(Location location) { 
Date dd=new Date(location.getTime()); 
    Date ddd=new Date(System.currentTimeMillis()-(1000*60*15)); 
    Log.e("", String.valueOf(location.getTime()+":"+System.currentTimeMillis()+":"+dd+":"+ddd)); 
    if (dd.compareTo(ddd)==1?true:false) { 
     got=true; 
     latitude=String.valueOf(location.getLatitude()); 
     longitude=String.valueOf(location.getLongitude());} 
} 
+0

謝謝你的回答。 但是,如果(dd.compareTo(ddd)== 1?true:false){它會返回false,因爲dd是Sat Jul 13 20:58:50並且ddd是現在的。 – Anto

+0

檢查設備ll永遠不會wrk n仿真器 –

相關問題