Android 当我在camera 2 onImageAvailable上按下capture时,图像被保存了10次

Android 当我在camera 2 onImageAvailable上按下capture时,图像被保存了10次,android,android-camera2,Android,Android Camera2,当我按一次“捕获”按钮时,图像被保存了10次,我被困在这里了 private final ImageReader.OnImageAvailableListener mOnImageAvailableListener = new ImageReader.OnImageAvailableListener() { @Override public void onImageAvailable(ImageReader reader) {

当我按一次“捕获”按钮时,图像被保存了10次,我被困在这里了

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

        @Override
        public void onImageAvailable(ImageReader reader) {
            Image img = reader.acquireNextImage();
            ByteBuffer buffer = img.getPlanes()[0].getBuffer();
            byte[] bytes = new byte[buffer.remaining()];

            buffer.get(bytes);
            img.close();

            mBackgroundHandler.post(new ImageSaver(bytes, mFile));
        }




    };

注意mState=STATE\u PICTURE\u take,这解决了我的问题

为什么不调试你的代码并检查为什么保存的代码执行了10次?@ADM我想这是因为
ImageReader.OnImageAvailableListener(){
,你知道如何在捕获一次侦听器后删除它,然后在再次按下捕获时重新连接吗
 case STATE_WAITING_LOCK: {
                        Integer afState = result.get(CaptureResult.CONTROL_AF_STATE);
                        if (afState == null) {
                            mState = STATE_PICTURE_TAKEN;
                            captureStillPicture();
                        }