我是位置服务,用于获取我的位置的纬度和经度。运行我的程序时,它会给我错误的纬度和经度。如何准确地获取我当前的位置详细信息?移动设备/设备中是否有任何设置?
String locationProvider = LocationManager.GPS_PROVIDER;
if(!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER )) {
locationProvider = LocationManager.NETWORK_PROVIDER;
}
Log.w(TAG,"CurrentLocProvider :"+locationProvider);
location=locationManager.getLastKnownLocation(locationProvider);
Log.i(TAG,"Location :"+location);
if(location!=null){
Log.i(TAG,"Location Lat :"+location.getLatitude());
latitude = Double.toString(location.getLatitude());
longitude = Double.toString(location.getLongitude());
txtView.append("\nLatitude : "+latitude+"\n Longitude : "+longitude);
}
过了一段时间
public void onLocationChanged(Location location) {
Log.i(TAG,"Lat :"+location.getLatitude();
Log.i(TAG,"Long :"+location.getLongitude();
}
也给我错误的位置。有时候美国,在另一个设备china.In不同的设备,它给出不同的结果? 我如何获得当前结果?
谢谢, 阿勒。
答案 0 :(得分:0)
嗯,如果设备GPS无法正常工作,则不太可能(但可能)给你错误的坐标。
BTW - 方法getLastKnownLocation可能返回完全错误的数据,如另一个stackoverflow问题中所述: 此位置可能是“过时的”,因为该方法会在上次使用GPS时返回该位置。还要看看onStatusChanged。您可以输出GPS的状态变化,以更好地了解正在发生的事情。
答案 1 :(得分:0)
您还应该检查网络位置提供程序是否已启用(用户可以在设置中禁用此功能):
locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)
甚至更好:使用LocationManager.PASSIVE_PROVIDER
。