后台任务中的准确度位置较低

时间:2019-02-10 18:15:21

标签: android gps location

我正在后台任务中获取位置更新。根据唤醒设备的次数以及所有这些,它可以很好地工作,但是我的问题是,在许多设备中,接收到的位置的准确性不是很好。很多时候它被设置在遥远的地方。就像设备报告新位置太早,而不是花费更多的时间来尝试获得更真实的位置。 当然,我使用setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)。 让我在此处粘贴我必须开始在后台定位的那段代码。如前所述,onLocationResult至少每20分钟执行一次,这很好。我的问题是收到的位置不是很真实。也许是几个街区之外。并非在所有设备上都发生这种情况。有些真的很准确。有没有办法告诉系统确保有一个更好的实际位置,而不是触发更快但错误的位置? 另一方面,我必须说,所有测试过的设备都具有GPS和网络定位器。

private FusedLocationProviderClient mFusedLocationClient;
private LocationCallback oLocationCallback;

private boolean StartLocating() {

    mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);

    //Callback for changes in location:
    oLocationCallback = new LocationCallback() {
        @Override
        public void onLocationResult(LocationResult locationResult) {
            super.onLocationResult(locationResult);
            Location oLocation = locationResult.getLastLocation();
            -- Do Work here with oLocation --
        }
    };

    //createLocationRequest:
    LocationRequest oLocationRequest = new LocationRequest();
    oLocationRequest.setInterval(20 * 60 * 1000); //20 minutes
    oLocationRequest.setFastestInterval(60 * 1000); //1 minute
    oLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

    try {
        mFusedLocationClient.requestLocationUpdates(oLocationRequest, oLocationCallback, Looper.myLooper());
        return true;
    } catch (SecurityException e) {            
        return false;
    }
}

0 个答案:

没有答案