2016-09-20 69 views
1

可以說我有這將被調用的次數轉換回調將被調用無限的次數可觀察

public interface Callback{ void onPreview(byte[] data); }

無限數量的回調,但我需要提前設置在camera.setPreviewCallback(Callback cb);

如何正確處理這種情況與RxJava?我想異步地從這個流中獲取數據,特別是當我完成我的工作時。

+0

可能[如何將基於Observable的基於回調的API轉換爲一個](http://stackoverflow.com/questions/29040346/how-to-convert-callback-based-api-into-one-based-on-observable ) –

回答

1

您可以使用Observable.fromEmitter並設置camera.setPreviewCallback(Callback cb)Observable.fromEmitter

public void stuff() { 
     Observable<Byte[]> obs = Observable.fromEmitter(emitter -> { 
       Callback cb = bytes -> emitter.onNext(bytes); 
       camera.setPreviewCallback(cb); 
     } 

     obs.subscribe(bytes -> /* perform with bytes */); 

} 

的身體(java的8語法僅用於清晰度/例如:你可以建立一個匿名類,而不是一個拉姆達)

0

對我來說,這聽起來像你應該有一個方法camera.getPreview(),返回一個發射字節數組的Observable。所以相機不會回調處理程序,但會返回調用者可以訂閱的Observable。