使用单独的可观察值来统计当前状态和进度的播放持续时间

时间:2019-04-09 21:37:09

标签: android rx-java reactive-programming rx-java2

假设我们有2个可观察值。

第一个正在发出一些状态更改(例如STATE_PLAY,STATE_PAUSE,STATE_FINISHED)

第二个是发射时间进度变化(例如1000、2000、3000、4000(以毫秒为单位))

我需要做的:基本上,我需要计算我们处于状态== STATE_PLAY的时间(状态可以在这里更改多次,例如STATE_PLAY-> STATE_PAUSED-> STATE_PLAY-> STATE_PAUSED-> STATE_PLAY- > STATE_FINISHED)

换句话说-当我们从第一观察得到状态STATE_PLAY时,我们需要获取最新的进度值,并将其保存为“播放间隔起始值”。之后,我们需要跳过所有进度进度,直到从第一个可观察到的状态变为STATE_PLAY状态为止。一旦我们收到状态!= STATE_PLAY,我们就需要再次获取最新的进度值并将其保存为“播放间隔结束值”。之后,我们需要通过简单地减去“结束值”-“开始值”来计算结束值和起始值之间的差,然后将结果值添加到某个缓冲变量中。

我当时想通过使用Observable.combineLatest()来做到这一点,当任何一个Observable发出新值时,我们将在其中接收更新,然后-按state == STATE_PLAY进行过滤,获取相应的进度值并保存以某种方式作为起始值,然后以某种方式跳过所有其他发射,直到状态将变为除STATE_PLAY以外的其他值,然后-从进度中获取相应的值,计算终止值和起始值之间的差,并以该差值递增当前“缓冲区”变量。 / p>

但是,我坚持将以上这些字词转换为正确的Rx代码。

也许我在这里使用CombineLatest的想法是完全错误的,但这就是我的想法。

有人可以为我指出一个好的解决方案吗?

谢谢。

0 个答案:

没有答案