【问题标题】:ImageReader setOnImageAvailableListener never workingImageReader setOnImageAvailableListener 从不工作
【发布时间】:2020-07-27 16:12:53
【问题描述】:

我对我的问题进行了很多研究,但没有一个帮助我运行我的代码,我的相机 2 api 的预览正在工作并显示在表面视图上,但是当我想通过按钮 clique 保存图片时,ImageReader.OnImageAvailableListener 永远不会工作。

android.util.Size[] jpegSizes = null;
                jpegSizes = cameraCharacteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP).getOutputSizes(ImageFormat.JPEG);
                int width = jpegSizes[0].getWidth();
                int height = jpegSizes[0].getHeight();
                ImageReader reader = ImageReader.newInstance(width, height, ImageFormat.JPEG, 1);
                List<Surface> outputSurfaces = new ArrayList<Surface>(1);
                outputSurfaces.add(reader.getSurface());
                outputSurfaces.add(mCameraSurface_1);
                final CaptureRequest.Builder captureBuilder = 
                mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE);
                captureBuilder.addTarget(reader.getSurface());
                captureBuilder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_AUTO);
                captureBuilder.addTarget(reader.getSurface());
                reader.setOnImageAvailableListener(readerListener, mHandler);

我使用此代码读取图像可用,消息日志“成功”从未显示

ImageReader.OnImageAvailableListener readerListener = new ImageReader.OnImageAvailableListener() {
    @Override
    public void onImageAvailable(ImageReader reader) {
        Log.v(TAG,"success" );
        
        Image image = null;
        try {
            image = reader.acquireLatestImage();
            ByteBuffer buffer = image.getPlanes()[0].getBuffer();
            byte[] bytes = new byte[buffer.capacity()];
            buffer.get(bytes);
            save(bytes);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (image != null) {
                image.close();
            }
        }
    }}

【问题讨论】:

    标签: java android image camera android-camera2


    【解决方案1】:

    问题是您没有构建 captureBuilder 来获取 CaptureRequest。您可以使用 CameraCaptureSession 并在会话的捕获方法中发送 captureBuilder.build()。请看:https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.Builder

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-04
      • 2023-03-12
      • 1970-01-01
      相关资源
      最近更新 更多