实现预览

预览用例会生成一个 SurfaceTexture 以流式传输相机输入。它还提供对 View 进行剪裁、缩放或旋转以确保其正常显示所需的其他信息。

当相机处于活动状态时,图片预览就会流式传输到此 SurfaceTexture。可将 SurfaceTexture 连接到 TextureViewGLSurfaceView

实现

以下示例显示了如何使用 PreviewOutput

Kotlin

    val previewConfig = PreviewConfig.Builder().build()
    val preview = Preview(previewConfig)

    preview.setOnPreviewOutputUpdateListener {
        previewOutput: Preview.PreviewOutput? ->
            // Your code here. For example, use previewOutput?.getSurfaceTexture()
            // and post to a GL renderer.
    }

    CameraX.bindToLifecycle(this as LifecycleOwner, preview)
    

Java

    PreviewConfig config = new PreviewConfig.Builder().build();
    Preview preview = new Preview(config);

    preview.setOnPreviewOutputUpdateListener(
        new Preview.OnPreviewOutputUpdateListener() {
            @Override
            public void onUpdated(Preview.PreviewOutput previewOutput) {
                // Your code here. For example, use previewOutput.getSurfaceTexture()
                // and post to a GL renderer.
        });
    });

    CameraX.bindToLifecycle((LifecycleOwner) this, preview);
    

使用 CameraView

CameraX 提供 CameraView 类,该类使用 Preview 来实现更方便的 View API。View API 会自动缩放、剪裁和旋转图片数据。

预览上实现了火炬模式、对焦和缩放控件。

其他资源

要详细了解 CameraX,请参阅下面列出的其他资源。

Codelab

  • CameraX 使用入门
  • 向应用中添加 CameraView 片段
  • 代码示例

  • 官方 CameraX 示例应用