Android Camera2 API为每张照片单独回调

时间:2015-08-12 12:07:06

标签: android api camera android-camera

我想从另一个类实例化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()都会破坏前一个。

我知道我写的内容有点乱,但我无法以其他方式解释。我希望有人可以破译。

谢谢!

0 个答案:

没有答案