背压有问题。使用发布主题获取发射时的传感器事件,并需要在事务中订阅主题时将数据保存到数据库。
我一直在尝试使用。窗口(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
}
}
);
你有两个选择,这取决于你想对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但无法理解给定方程的基础。 我怎样才能实现上述信息?