2017-01-12 2 views
1

Observable<SensorEvent> dataFromSensor() 메서드는 SensorEvents의 무한 스트림을 반환합니다. 20 개의 센서 이벤트 목록으로 수집해야합니다. 어떻게받을 수 있습니까? buffer(20)이 작동하지 않으면 20 개의 항목이있는 목록을 반환하지만이 목록의 모든 항목은 동일합니다.무한 관측 가능 목록 번들 만들기

더 코드 :

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

RxSensors으로하지만 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