观察摄像头 isFocusing || !isFocusing 用于 androidx.camera.core.Camera

huangapple 未分类评论46阅读模式
英文:

Observing camera isFocusing || !isFocusing for androidx.camera.core.Camera

问题

以下是翻译好的内容:

有没有文档可以帮助我指导方向?我最近才实现了AndroidX,因为我之前在使用旧的相机框架。

我只找到了一个线索,但是走到了死胡同。我想在相机对焦和/或对焦完成时收到通知。

编辑:
以下是我设置和配置相机的代码块:

Size screen = new Size(txView.getWidth(), txView.getHeight()); // 屏幕的尺寸

Preview preview = new Preview.Builder()
        // 我们请求纵横比,但不指定分辨率
        .setTargetResolution(screen)
        // 设置初始目标旋转
        .setTargetRotation(getWindowManager().getDefaultDisplay().getRotation())
        .build();

ImageCapture imageCapture = new ImageCapture.Builder()
        .setCaptureMode(ImageCapture.CAPTURE_MODE_MAXIMIZE_QUALITY)
        // 我们请求纵横比,但不指定分辨率,以匹配预览配置,但会让 CameraX 为最适合我们用例的特定分辨率进行优化
        .setTargetResolution(screen)
        // 设置初始目标旋转,如果旋转在此用例的生命周期中发生更改,我们将需要再次调用此方法
        .setTargetRotation(getWindowManager().getDefaultDisplay().getRotation())
        .build();

ImageAnalysis imageAnalyzer = new ImageAnalysis.Builder()
        .setTargetResolution(screen)
        .setTargetRotation(getWindowManager().getDefaultDisplay().getRotation())
        .build();

CameraSelector cameraSelector =
        new CameraSelector.Builder()
                .requireLensFacing(CameraSelector.LENS_FACING_BACK)
                .build();
int count = 0;

cameraProviderFuture.addListener(new Runnable() {
    @Override
    public void run() {
        try {
            ProcessCameraProvider cameraProvider = cameraProviderFuture.get();
            cameraProvider.unbindAll();

            androidx.camera.core.Camera camera = cameraProvider.bindToLifecycle(
                    MainActivity.this,
                    cameraSelector,
                    preview,
                    imageAnalyzer,
                    imageCapture
            );

            preview.setSurfaceProvider(txView.createSurfaceProvider(camera.getCameraInfo()));
            onCreateTime = System.currentTimeMillis()/1000;

        } catch (Exception e) {
        }
    }
}, ContextCompat.getMainExecutor(this));

谢谢大家!

英文:

Is there any documentation you guys can help me drive me in the direction? I've only VERY recently implemented AndroidX as I was using the old Camera framework.

I've only found one lead and it was a dead end. I guess I would like to be notified when the camera is focusing and/or when it is focused.

Edit:
This is my code block where I setup and configure my camera:

        Size screen = new Size(txView.getWidth(), txView.getHeight()); //size of the screen

    Preview preview = new Preview.Builder()
            // We request aspect ratio but no resolution
            .setTargetResolution(screen)
            // Set initial target rotation
            .setTargetRotation(getWindowManager().getDefaultDisplay().getRotation())
            .build();

    ImageCapture imageCapture = new ImageCapture.Builder()
            .setCaptureMode(ImageCapture.CAPTURE_MODE_MAXIMIZE_QUALITY)
            // We request aspect ratio but no resolution to match preview config, but letting
            // CameraX optimize for whatever specific resolution best fits our use cases
            .setTargetResolution(screen)
            // Set initial target rotation, we will have to call this again if rotation changes
            // during the lifecycle of this use case
            .setTargetRotation(getWindowManager().getDefaultDisplay().getRotation())
            .build();

    ImageAnalysis imageAnalyzer = new ImageAnalysis.Builder()
            .setTargetResolution(screen)
            .setTargetRotation(getWindowManager().getDefaultDisplay().getRotation())
            .build();

    CameraSelector cameraSelector =
            new CameraSelector.Builder()
                    .requireLensFacing(CameraSelector.LENS_FACING_BACK)
                    .build();
    int count = 0;

    cameraProviderFuture.addListener(new Runnable() {
        @Override
        public void run() {
            try {
                ProcessCameraProvider cameraProvider = cameraProviderFuture.get();
                cameraProvider.unbindAll();

                androidx.camera.core.Camera camera = cameraProvider.bindToLifecycle(
                        MainActivity.this,
                        cameraSelector,
                        preview,
                        imageAnalyzer,
                        imageCapture
                );

                preview.setSurfaceProvider(txView.createSurfaceProvider(camera.getCameraInfo()));
                onCreateTime = System.currentTimeMillis()/1000;

            } catch (Exception e) {
            }
        }
    }, ContextCompat.getMainExecutor(this));

Thank you all!

huangapple
  • 本文由 发表于 2020年5月5日 06:34:28
  • 转载请务必保留本文链接:https://java.coder-hub.com/61602747.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定