假设我有一个将被无限次调用的回调
public interface Callback{
void onPreview(byte[] data);
}
但我需要在camera.setPreviewCallback(Callback cb);
如何使用RxJava正确处理这种情况?我想异步地从这个流中获取数据,特别是当我完成工作时。
答案 0 :(得分: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语法仅用于清晰/即:您可以构建匿名类而不是lambda)
答案 1 :(得分:0)
听起来你应该有一个方法camera.getPreview()
,它返回一个发出字节数组的Observable。因此,摄像机不会回调处理程序,而是返回调用者可以订阅的Observable。