簡體   English   中英

ImageReader maxImages(2)已在后台任務中獲取

[英]ImageReader maxImages (2) has already been acquired in background task

我正在使用ImageReader和Handler來獲取背景圖像。 但我得到:

致命異常:java.lang.IllegalStateException已獲取maxImages(2),在獲取更多之前調用#close。

 private final ImageReader.OnImageAvailableListener mOnImageAvailableListener
        = new ImageReader.OnImageAvailableListener() {

    @Override
    public void onImageAvailable(ImageReader reader) {
        mBackgroundHandler.post(new ImageSaver(reader.acquireNextImage(), CameraFragment.this));
    }

};

我的后台任務是:

    private static class ImageSaver implements Runnable {

    /**
     * The JPEG image
     */
    private final Image mImage;

    BaseCameraFragment cameraFragmentContext;

    public ImageSaver(Image image, BaseCameraFragment cameraFragmentContext) {
        mImage = image;
        this.cameraFragmentContext = cameraFragmentContext;
    }

    @Override
    public void run() {
        ByteBuffer buffer = mImage.getPlanes()[0].getBuffer();
        cameraFragmentContext.photoReady(new ByteBufferInputStream(buffer));
        mImage.close();
    }

}

我該如何解決這個問題?

`

private ImageReader.OnImageAvailableListener imageAvailableListener = new ImageReader.OnImageAvailableListener()
{
    @Override
    public void onImageAvailable(ImageReader reader) {
        Image img = mReader.acquireLatestImage();

        //mReader.close();
       img.close();
    }
};

`

只需使用img.close(); 可以解決它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM