如何在Android中获取手机的经度,纬度?

时间:2010-02-15 11:17:46

标签: java android gps location

我在线阅读了一些教程,发现LocationManager就是这样做的。 这是我在网上找到的代码。但是,我不明白。为什么我不能得到长/拉?为什么要经历所有“改变”位置的事情......

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);   
        }

    }); 

顺便说一下,这段代码不起作用。当我在计时器中运行时...没有任何反应。没有记录任何内容。我只想要经度纬度!!

1 个答案:

答案 0 :(得分:2)

LocationManager可以返回最后一个已知位置,但这不是很精确,因此您必须请求位置更新并等待第一个位置更新。然后您可以继续接收或取消它们。您可以请求网络和GPS更新。

如果您使用手机测试代码,那么您必须等待GPS修复,这可能需要一段时间。网络提供商应该快得多。

如果您使用Eclipse,则必须使用DDMS发送人工GPS更新。您无法从模拟器测试网络提供程序(您永远不会收到更新)。