当前位置: 首页 > 知识库问答 >
问题:

加速度计RxJava背压

濮阳宜
2023-03-14

背压有问题。使用发布主题获取发射时的传感器事件,并需要在事务中订阅主题时将数据保存到数据库

我一直在尝试使用。窗口(100)操作符,这样每当我连续收到100个传感器事件时,我就可以批量插入,但一次只能收到一个项目。订阅

不希望使用缓冲区运算符删除事件。正确的处理方法是什么?

@Override
public void onSensorChanged(SensorEvent sevent) {

    Sensor sensor = sevent.sensor;

    switch (sensor.getType()) {
        case Sensor.TYPE_ACCELEROMETER:
            sensorEventPublishSubject.onNext(sevent);
            break;
    }
}

sensorEventPublishSubject
            .map(event ->
                    new AccModel(
                            event.values[0],
                            event.values[1],
                            event.values[2],
                            event.accuracy                           
                    )
            )
            .window(100)
            .subscribe(
                    new Action1<Observable<AccModel>>() {
                        @Override
                        public void call(Observable<AccModel> accModelObservable) {
                            //insert in db
                        }
                    }
            );

共有1个答案

景令秋
2023-03-14

你有两个选择,这取决于你想对OneError事件做什么。

首先,使用解决方案。window是正确的,只是它发出一个可观察到的,每100个事件你会得到一个可观察到的,当你订阅它时,可观察到的将重播这100个事件。此外,如果发生错误,它也会按顺序重播错误事件(AFAIK)。

如果您不关心序列中的错误事件,那么就有了解决方案。缓冲区(100),您应该在其前面放置OneRorReturn()OneRorResumeNext(),用于将OneRor事件转换为onNext。这是因为在出现onError的情况下,buffer操作符会立即传播它,因此会丢失临时缓冲区中的事件(

 类似资料:
  • 采集设备在x、y、z方向上的动作。 方法: accelerometer.getCurrentAcceleration accelerometer.watchAcceleration accelerometer.clearWatch 参数: accelerometerSuccess accelerometerError accelerometerOptions 对象(只读): Acceleratio

  • 问题内容: 是否可以使用加速度计检测高度?例如,如果我手持手机,然后举起手臂来检测身高? 谢谢 问题答案: 假设您的意思是要检测手机从其凝视点起的高度,是的。android加速度计可测量力,有关如何使用它的更多信息,请参见此处 。请记住,加速度计并不是一个完美的设备,因此您的结果将是手机实际移动了多少的近似值。

  • 我正在使用IMU(3轴加速度计、3轴陀螺仪、3轴磁力计),我想从加速度计数据中获取线性加速度。我知道传感器融合和使用陀螺仪数据(并获取方向)获取重力矢量的能力,从而消除其对相应轴的影响。 我走在正确的道路上吗?如果可以的话,你能帮忙吗?

  • 加速计 jd.startAccelerometer(Object object) 开始监听加速度数据。 参数 Object object 属性 类型 默认值 必填 说明 interval string normal 否 监听加速度数据回调函数的执行频率 success function 否 接口调用成功的回调函数 fail function 否 接口调用失败的回调函数 complete funct

  • 我使用RxJava观察点击几个按钮。 这些订阅将在一个对象上调用不同的函数,这需要几毫秒的时间。这些功能是同步的。 问题是,当按下太多按钮时,会出现背压异常。对我来说,有效的方法是删除几个输入(最好是旧的输入)。RxJava有可能做到这一点吗?

  • 给定一个9自由度的加速度计(加速度计、陀螺仪和磁强计),我想消除/补偿加速度计读数中重力的影响(加速度计可以自由旋转)。传感器以四元数表示方式给出相对于(磁)北、西和上参考坐标系的方向。 我找到这个了http://www.varesano.net/blog/fabio/simple-gravity-compensation-9-dom-imus但无法理解给定方程的基础。 我怎样才能实现上述信息?