gps不能准确提供Android的经度和纬度吗?

时间:2010-10-25 09:09:37

标签: android gps

我是位置服务,用于获取我的位置的纬度和经度。运行我的程序时,它会给我错误的纬度和经度。如何准确地获取我当前的位置详细信息?移动设备/设备中是否有任何设置?

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不同的设备,它给出不同的结果? 我如何获得当前结果?

谢谢, 阿勒。

2 个答案:

答案 0 :(得分:0)

嗯,如果设备GPS无法正常工作,则不太可能(但可能)给你错误的坐标。

BTW - 方法getLastKnownLocation可能返回完全错误的数据,如另一个stackoverflow问题中所述: 此位置可能是“过时的”,因为该方法会在上次使用GPS时返回该位置。

还要看看onStatusChanged。您可以输出GPS的状态变化,以更好地了解正在发生的事情。

答案 1 :(得分:0)

您还应该检查网络位置提供程序是否已启用(用户可以在设置中禁用此功能):

locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)

甚至更好:使用LocationManager.PASSIVE_PROVIDER