我正在开发一个Android应用程序,我想得到Android手机的经纬度。获取纬度和经度的代码在一段时间后给出了值。有时,它根本没有给出价值。任何人都可以帮助我做些什么!
答案 0 :(得分:1)
您需要添加此代码才能获取当前位置。确保你提供所有权限
Location Manager location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if(location!=null)
{
latitude = location.getLatitude();
longitude = location.getLongitude();
}
答案 1 :(得分:0)
更快捷的方法是获取最后一个已知位置getLastKnownLocation()
并检查此位置的时间是否不远location.getTime()
。或者在获得真实位置之前使用它。
另一个提示是使用GPS_PROVIDER和NETWORK_PROVIDER,因此您的代码将是这样的:
LocationManager locManager;
locManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
/*call both providers , the quickest one will call the listener and in the listener you remove the locationUpdates*/
locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0 ,0 , locationListener);
locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0 ,0 , locationListener);
Location location = locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
/*check both providers even for lastKnownLocation*/
if (location == null)
{
location = locManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
}
if(location != null) {
String lat = String.valueOf(location.getLatitude());
v1.setText(lat);
String longi = String.valueOf(location.getLatitude());
v2.setText(longi);
}
这是一个简单的示例,更精细的解决方案将比较提供商之间的最新lastKnownLocation
。
答案 2 :(得分:0)
如果您没有收到最新信息,请使用位置服务提供商的最后知道位置,因为
当您的应用程序当时没有运行时,其他一些应用程序使用位置管理器来获取当前位置。
然后,一旦您使用位置管理器启动应用程序,位置管理器基本上会花些时间准备发送当前位置,所以当时您必须从位置提供程序获取最后一个知道位置,因为您必须以这种方式设计服务。 一旦位置经理稳定,然后使用这些位置。
这是最好的方法。
谢谢 Bhavdip