Android Dev Summit, October 23-24: two days of technical content, directly from the Android team. Sign-up for livestream updates.

Implementación de una vista previa

El caso práctico de vista previa produce un SurfaceTexture que transmite la entrada de la cámara. También proporciona información adicional para una View, que permite recortar, ajustar o rotar la imagen para la correcta visualización.

La vista previa de la imagen se transmite a este SurfaceTexture cuando la cámara se activa. SurfaceTexture puede estar conectado a TextureView o GLSurfaceView.

Implementación

En el siguiente ejemplo, se muestra cómo usar 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);
    

Cómo usar CameraView

CameraX proporciona una clase CameraView que usa Preview para implementar una API de visualización más conveniente. Esta API ajusta, recorta y rota los datos de la imagen automáticamente.

En la vista previa, se implementan los controles del modo linterna, enfoque y zoom.

Recursos adicionales

Para obtener más información acerca de CameraX, consulta los siguientes recursos adicionales.

Codelabs

  • Cómo comenzar a usar CameraX
  • Cómo agregar un fragmento de CameraView a tu app
  • Muestra de código

  • App de muestra de CameraX oficial