网上看了一些教程,发现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);
}
});
顺便说一句,这段代码不起作用。当我在计时器中运行它时......没有任何反应。什么都没有记录。我只想要经度纬度!!
最佳答案
LocationManager 可以返回最后一个已知位置,但这不是很精确,因此您必须请求位置更新并等待第一个。然后您可以继续接收它们或取消它们。您可以请求网络和 GPS 更新。
如果您使用手机测试代码,则必须等待 GPS 定位,这可能需要一段时间。网络提供商应该更快。
如果您使用 Eclipse , 然后你必须使用 DDMS 发送人工 GPS 更新.您无法从模拟器测试网络提供商(您永远不会收到更新)。
关于java - 我如何在Android中获取手机的经度,纬度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2265502/