2010-02-15 54 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更新。您无法从仿真器测试网络提供者(您将永远不会收到更新)。

相关问题