为什么我的GPS没有给我确切的位置?

时间:2014-06-16 19:19:05

标签: android google-maps gps

我正在尝试获取Android设备的确切经度和纬度。问题是,在谷歌地图中设置数据时,我意识到位置不正确。我认为该设备正在获得任何以前保存的位置

                LocationManager locationManager;
                String svcName = Context.LOCATION_SERVICE;
                locationManager = (LocationManager)getSystemService(svcName);

                Criteria criteria = new Criteria();
                criteria.setAccuracy(Criteria.ACCURACY_FINE);
                criteria.setPowerRequirement(Criteria.POWER_HIGH);
                criteria.setAltitudeRequired(false);
                criteria.setBearingRequired(false);
                criteria.setSpeedRequired(false);
                criteria.setCostAllowed(true);
                String provider = locationManager.getBestProvider(criteria, true);

                Location location = locationManager.getLastKnownLocation(provider);

                updateWithNewLocation(location);

                locationManager.requestLocationUpdates(provider, 2000, 10, locationListener);

                if (location != null) {
                    latitude = location.getLatitude();
                    longitude = location.getLongitude();
                    Log.i("lon", longitude+"" );
                    Log.i("lat", latitude+"");
                }else{
                    Log.i("Null", "Es nulo");
                }

LocationListener的

private final LocationListener locationListener = new LocationListener() {

    public void onLocationChanged(Location location) {
        updateWithNewLocation(location);
    }

    public void onProviderDisabled(String provider) {
        updateWithNewLocation(null);
    }

    public void onProviderEnabled(String provider) {}

    public void onStatusChanged(String provider,int status,Bundle extras){}
};

XML

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_GPS"/>
<uses-permission android:name="android.permission.ACCESS_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_ASSISTED_GPS"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

我该如何解决?我需要设备的当前位置

1 个答案:

答案 0 :(得分:3)

该行:

  Location location = locationManager.getLastKnownLocation(provider);

提供最后的知识,即使该位置是从昨天开始。

删除该行,输入适当的代码,并等到onLocationChanged()中的位置事件。

  • 此外,您可以检查:位置的时间戳:将差异计算到当前时间,您知道它是否是最近的位置。

  • 进一步检查位置getHoricontalAccuracy()(或命名相似)如果超过40米则忽略该位置。