我想从另一个类实例化MyCamera2Manager类并初始化它。
public void MyCamera2Manager (){
initStuff(); //such as openCamera, createCaptureSession, etc.
}
之后,我希望能够在该实例上调用类方法 takePhoto ,传入回调并接收位图
public void takePhoto(TaskCallback<Bitmap> bitmapListener){
//where can I send this bitmapListener?
CaptureRequest.Builder requestBuilder = ...
requestBuilder.addTarget(mImageReader.getSurface());
CameraRequest request = requestBuilder.build();
mCaptureSession.capture(request, ...)
}
我不知道如何做到这一点,因为我只有 1 ImageReader和 1 OnImageAvailableListener,用于监听照片。理想情况下,我想将所有 bitmapListener 传递给单独的ImageReader,从中获取图像并将其传递回 bitmapListener 。
我每次调用 takePhoto()时都试图构建一个ImageReader(不像上面那样),因此每次创建一个新的 ImageReader.OnImageAvailableListener 并传递给它我最初的 bitmapListener ,但这不起作用,因为我需要预先实例化一个有效的ImageReader,这样我就可以构建一个 CaptureSession 。
或
我每次拍照时都应该创建一个CaptureSession吗?这看起来并不正确。我不能这样做,因为每一个新的 CameraDevice.createCaptureSession()都会破坏前一个。
我知道我写的内容有点乱,但我无法以其他方式解释。我希望有人可以破译。
谢谢!