2017-01-12 4 views
1

Observable<SensorEvent> dataFromSensor()というメソッドがあり、無限ストリームSensorEventsを返します。 20個のセンサーイベントをリストに収集する必要があります。 どうすれば入手できますか? buffer(20)は機能しませんが、20個のアイテムを含むリストを返しますが、このリスト内のすべてのアイテムは同じです。Infinite Observableからリストバンドルを作成する

もっとコード:

RxSensors

final RxSensorManager sensorManager = new RxSensorManager(oldSensorManager); 
sensorManager.observeSensor(Sensor.TYPE_ACCELEROMETER, SensorManager.SENSOR_DELAY_FASTEST) 
.buffer(20) 
.onSubscribe(/*onNext, onError, onCompleted omitted*/) 

ではなく、私はObservable.fromAsync()とsensorManagerコールバックやRxSensorsでそれを作成した場合に違いはありません。 onSubscribeのすべてのリストには、この同じ項目があります。

+0

あなたのコードを提供してください。バッファはおそらく他の場所にあるかもしれません。または項目は本当に同じです –

+0

もっとコードを追加しました@PogonetsAnton – JakeT

答えて

1

SensorManagerのように、毎回同じSensorEventを変更します。 バッファーの前に同じようなものを追加してみてください。例えば

sensorManager.observeSensor(Sensor.TYPE_ACCELEROMETER, SensorManager.SENSOR_DELAY_FASTEST) 
      .map(sensorEvent -> { 
       List<Float> copy = new ArrayList<>(); 

       for (float value : sensorEvent.values) { 
        copy.add(value); 
       } 

       return copy; 
      }) 
      .buffer(20) 
      .subscribe(); 
+0

うん、働いて!どうもありがとう! – JakeT

関連する問題