2010-02-15 88 views
1

我在網上閱讀了一些教程,發現LocationManager可以做到這一點。 這是我在網上找到的代碼。但是,我不明白。爲什麼我不能獲得長/拉特?爲什麼要通過所有的「改變」位置的東西...如何在Android中獲取手機的經度,緯度?

lm=(LocationManager)this.getSystemService(LOCATION_SERVICE); 
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10, 10, new LocationListener(){ 

     @Override 
     public void onLocationChanged(Location location) {       
      Log.d("a","onLocationChanged: lat="+location.getLatitude()); 
      Log.d("a","onLocationChanged: lat="+location.getLongitude());     
     } 

     @Override 
     public void onProviderDisabled(String provider) { 
      Log.d("a","onProviderDisabled: " +provider); 
     } 

     @Override 
     public void onProviderEnabled(String provider) { 
      Log.d("a","onProviderEnabled: " +provider); 
     } 

     @Override 
     public void onStatusChanged(String provider, int status,Bundle extras) { 
      Log.d("a","onStatusChanged: " +provider + status); 
     } 

    }); 

順便說一句,這段代碼不起作用。當我在計時器中運行它時......沒有任何反應。沒有被記錄。我只想要經度緯度!

回答

2

LocationManager可以返回最後一個已知位置,但這不是非常精確,因此您必須請求位置更新並等待第一個位置。然後你可以繼續接收它們或取消它們。您可以請求網絡和GPS更新。

如果您使用手機來測試您的代碼,那麼您必須等待GPS修正,這可能需要一段時間。網絡提供商應該更快。

如果您使用的是Eclipse,那麼您必須使用DDMS發送人造GPS更新。您無法從仿真器測試網絡提供者(您將永遠不會收到更新)。