我的应用使用ReactiveLocationProvider
使用LocationRequest
对象获取位置信息。这是完整的代码:
mLocationRequestPassive = LocationRequest.create();
mLocationRequestPassive.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequestPassive.setFastestInterval(60000);
mLocationRequestPassive.setInterval(PASSIVE_UPDATE_PERIOD_IN_SECONDS * 1000);
mSubscriptions.add(mReactiveLocationProviderPassive
.getUpdatedLocation(mLocationRequestPassive)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::onLocationChanged,
throwable -> Timber.w(throwable,
"Location request error")));
几乎95%的时间都有效,但有时会开始重复发送lat / lng。但是,准确性是不同的。它曾经发生在其他人身上吗?有没有解决这个问题。
我正在使用以下版本的库
compile 'pl.charmas.android:android-reactive-location:0.9@aar'
compile 'com.google.android.gms:play-services-location:11.0.4'
更新
在此期间车辆正在移动。因此,添加setSmallestDisplacement
只是将其从具有相同lat / lng的位置更新更改为无位置更新。
答案 0 :(得分:1)
我不知道为什么会在服务中发生这种情况,但通常情况下,您可以使用distinctUntilChanged(BiPredicate)
来过滤后续项目中的小变化:
Observable.just(10.0, 10.1, 10.15, 10.162, 11.0)
.distinctUntilChanged((prev, curr) -> Math.abs(prev - curr) < 0.09)
.subscribe(System.out::println);