簡體   English   中英

Android studio 如何在 CameraX 中添加設置縮放 function

[英]Android studio How to add set Zoom function in CameraX

我在 Android 工作室中找到了使用 CameraX 的源代碼。 但它效果不佳,因為它沒有焦點 function 所以我的照片總是失焦。 我在網上搜索過,但是由於我這幾天才學習Android Studio,所以不太明白如何將他們的代碼轉換成我的代碼。 總結一下,我想添加放大和縮小 function 但我不知道該怎么做,有人可以幫我嗎? 請~

public abstract class AbstractCameraXActivity<R> extends BaseModuleActivity {
private static final int REQUEST_CODE_CAMERA_PERMISSION = 200;
private static final String[] PERMISSIONS = {Manifest.permission.CAMERA};
private long mLastAnalysisResultTime;
protected abstract int getContentViewLayoutId();
protected abstract TextureView getCameraPreviewTextureView();
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(getContentViewLayoutId());

    startBackgroundThread();
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
        != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(
            this,
            PERMISSIONS,
            REQUEST_CODE_CAMERA_PERMISSION);
    } else {
        setupCameraX();
    }
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    if (requestCode == REQUEST_CODE_CAMERA_PERMISSION) {
        if (grantResults[0] == PackageManager.PERMISSION_DENIED) {
            Toast.makeText(
                this,
                "You can't use object detection example without granting CAMERA permission",
                Toast.LENGTH_LONG)
                .show();
            finish();
        } else {
            setupCameraX();
        }
    }
}
private void setupCameraX() {
    final TextureView textureView = getCameraPreviewTextureView();
    final PreviewConfig previewConfig = new PreviewConfig.Builder().build();
    final Preview preview = new Preview(previewConfig);
    preview.setOnPreviewOutputUpdateListener(output -> textureView.setSurfaceTexture(output.getSurfaceTexture()));


    final ImageAnalysisConfig imageAnalysisConfig =
        new ImageAnalysisConfig.Builder().setTargetResolution(new Size(1024, 1024))
            .setCallbackHandler(mBackgroundHandler)
            .setCallbackHandler(mBackgroundHandler)
            .setImageReaderMode(ImageAnalysis.ImageReaderMode.ACQUIRE_LATEST_IMAGE)
                .build();
    final ImageAnalysis imageAnalysis = new ImageAnalysis(imageAnalysisConfig);
    imageAnalysis.setAnalyzer((image, rotationDegrees) -> {
        if (SystemClock.elapsedRealtime() - mLastAnalysisResultTime < 500) {
            return;
        }

        final R result = analyzeImage(image, rotationDegrees);
        if (result != null) {
            mLastAnalysisResultTime = SystemClock.elapsedRealtime();
            runOnUiThread(() -> applyToUiAnalyzeImageResult(result));
        }
    });
    CameraX.bindToLifecycle(this, preview, imageAnalysis);
}
protected abstract R analyzeImage(ImageProxy image, int rotationDegrees);
protected abstract void applyToUiAnalyzeImageResult(R result);

} '''

我建議使用PreviewView / CameraController API。 它是一個高級 API,可以為您處理許多低級細節,包括縮放/對焦。 示例代碼:

PreviewView previewView = view.findViewById(R.id.preview_view);
LifecycleCameraController cameraController = new LifecycleCameraController(requireContext());

previewView.setController(cameraController);
cameraController.bindToLifecycle(getViewLifecycleOwner())

暫無
暫無

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

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