首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用FusedLocationProviderClient时的onLocationChanged

使用FusedLocationProviderClient时的onLocationChanged
EN

Stack Overflow用户
提问于 2019-07-15 11:03:59
回答 1查看 302关注 0票数 2

documentation中已经明确指出,LocationListener“用于在位置发生变化时接收来自FusedLocationProviderApi的通知”。另一方面,FusedLocationProviderApi已经被标记为不推荐使用,他们建议使用FusedLocationProviderClient。那么,在使用FusedLocationProviderClient时,如何检测位置发生了变化?

我之所以需要这样做,是因为如果我只使用requestLocationUpdate callback,则无论位置值是否更改,它都会更新该值。我只需要更改位置值。这样,如果我将location值更新到数据库中,它就不会浪费。简而言之,只更新位置发生变化的位置值。而不是基于时间跨度更新位置值。

代码:

代码语言:javascript
复制
private void createLocationCallback() {
    mLocationCallback = new LocationCallback() {
        @Override
        public void onLocationResult(LocationResult locationResult) {
            super.onLocationResult(locationResult);
            //every 5 seconds
            mLastLocation = locationResult.getLastLocation();
            mLastUpdateTime = DateFormat.getTimeInstance().format(new Date());
            updateUI();//need onLocationChanged

        }
    };
}

private void startLocationUpdates(){
    Log.e(TAG, "startLocationUpdate");
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            requestPermissions(new String[] {Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSIONS_REQUEST_FINE_LOCATION);
        }
        return;
    }
    mFusedLocationClient.requestLocationUpdates(mLocationRequest,mLocationCallback, Looper.myLooper());
}
EN

回答 1

Stack Overflow用户

发布于 2019-07-15 11:49:57

在您的LocationRequest中,您可以使用setSmallestDisplacement

示例

代码语言:javascript
复制
locationRequest.setSmallestDisplacement(10) // 10 meters. location callback only fired when location change more than 10 metter

另一件事是定位准确率不能100%,所以有时候你把手机放在不动的地方,但是位置还是会变的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57032801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档