精准获取GPS位置

3
`私有 void getLocation() {`
        String context = Context.LOCATION_SERVICE;
        LocationManager locationManager = (LocationManager)getSystemService(context);
        Criteria criteria = new Criteria();
        criteria.setAccuracy(Criteria.ACCURACY_COARSE);
        criteria.setAltitudeRequired(false);
        criteria.setBearingRequired(false);
        criteria.setCostAllowed(true);
        criteria.setPowerRequirement(Criteria.POWER_LOW);

        String provider = locationManager.getBestProvider(criteria, true);
        Location location = locationManager.getLastKnownLocation(provider);
        updateWithNewLocation(location);

        locationManager.requestLocationUpdates(provider, 2000, 5, 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)
        {

        }
    }`  

这是我获取位置的代码。但我的应用程序结果并不准确。我想要精确地获取我的位置。是否还有其他方法?

1个回答

4
获取准确的定位需要信号的支持。例如,如果没有GPS信号,则会使用WiFi或服务提供商跟踪,这种情况下的精度较低。因此,请尝试使用Google地图来查看您的位置。如果您在Google地图上获取到更准确的位置信息,则说明代码中缺少某些内容。
我发现一个错误是您正在使用ACCURACY_COARSE,请尝试使用ACCURACY_FINE。此外,如果您还没有添加这些权限,请在清单文件中添加它们。

如果我使用 ACCURACY_FINE,我就无法获取我的位置 :( - thanhtv
是的,很可能你测试的地方GPS信号不太好。在那个地方,谷歌地图能否比你的应用程序使用COARSE设置提供更好的位置? - Harshay Buradkar
COARSE设置使用WiFi或位置提供程序,可能能够更快地提供位置信息,因为您不使用GPS设备,所以会使用更少的电池,但它的精度会降低。但是,如果您需要准确的位置信息,您将需要使用通过FINE实现的GPS设备。 - Harshay Buradkar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接