2011-10-15 36 views
0

我只需要從任何提供商
最後已知的GPS位置,而不告訴任何提供商更新。如何獲得任何GPS座標沒有聽衆或requestLocationUpdates

這可能沒有添加監聽器或requestLocationUpdates?

的事情是我需要的只是一個大概的位置,而不會阻塞延遲

我試着從ActivityonCreate這個代碼,但providers.size()始終爲零

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
List<String> providers = lm.getProviders(true); 

    Location l = null; 

    for (int i=providers.size()-1; i>=0; i--) { 
     l = lm.getLastKnownLocation(providers.get(i)); 
     if (l != null) 
     break; 
    } 

<uses-permission android:name="android.permission.ACCESS_GPS" /> 
    <uses-permission android:name="android.permisssion.ACCESS_FINE_LOCATION"></uses-permission> 
    <uses-permission android:name="android.permisssion.ACCESS_COARSE_LOCATION"></uses-permission> 

回答

1

嘗試this代碼段。

+0

IM實際測試但不斷得到providers.size()= 0。我的清單中有使用許可,並且gps已啓動,但仍然未提供服務提供商 – Erik

+0

工作正常。假設用戶在紐約購買他的設備,然後在日本開啓它,然後安裝我的應用程序。是否有機會我的應用程序現在獲得紐約座標,因爲我的舊值正確? – Erik

2

即使你可以從位置管理的最後已知位置的可能是過時所以它能夠更好地讓所有供應商名單,並檢查最新的位置,以便它可以更準確

LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     List<String> providers = manager.getAllProviders(); 
     Location loc; 

     for (int i = 0; i < providers.size(); i++) { 

      loc = manager.getLastKnownLocation(providers.get(i)); 
      loc.getTime(); 
      /* 
      * put your code here 
      * compare loc from providers to get the most 
      * recent location 
      */ 
     } 
} 
+0

這是一個好的IDE會做到這一點 – Erik

相關問題