Cómo grabar videos

Nota: En esta página, se hace referencia a la clase Camera, que dejó de estar disponible. Te recomendamos que uses CameraX o, en casos de uso específicos, Camera2. CameraX y Camera2 admiten Android 5.0 (nivel de API 21) y versiones posteriores.

En esta lección, se explica cómo capturar videos con las aplicaciones de cámara existentes.

Tu aplicación tiene una función, y la integración de videos es solo una pequeña parte de ella. Tu objetivo es tomar videos con un mínimo de complicaciones y no reinventar la videocámara. Afortunadamente, la mayoría de los dispositivos con Android ya tienen una aplicación de cámara que graba videos. En esta lección, aprenderás cómo hacer que lo haga por ti.

Consulta los siguientes recursos relacionados:

Cómo solicitar la función de cámara

Para anunciar que tu aplicación depende de tener una cámara, coloca una etiqueta <uses-feature> en el archivo de manifiesto:

<manifest ... >
    <uses-feature android:name="android.hardware.camera"
                  android:required="true" />
    ...
</manifest>

Si tu aplicación usa una cámara para funcionar, pero no la requiere, configura android:required como false. De esa manera, Google Play permitirá que los dispositivos sin cámara descarguen la aplicación. Luego, es tu responsabilidad verificar la disponibilidad de la cámara durante el tiempo de ejecución llamando a hasSystemFeature(PackageManager.FEATURE_CAMERA). Si no hay una cámara disponible, debes inhabilitar las funciones de la cámara.

Cómo mirar el video

La aplicación de Cámara de Android muestra el video en el Intent entregado a onActivityResult() como una Uri que apunta a la ubicación del video almacenado. Con el siguiente código, se recupera este video y se muestra en un VideoView.

Kotlin

override fun onActivityResult(requestCode: Int, resultCode: Int, intent: Intent) {
    if (requestCode == REQUEST_VIDEO_CAPTURE && resultCode == RESULT_OK) {
        val videoUri: Uri = intent.data
        videoView.setVideoURI(videoUri)
    }
}

Java

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    if (requestCode == REQUEST_VIDEO_CAPTURE && resultCode == RESULT_OK) {
        Uri videoUri = intent.getData();
        videoView.setVideoURI(videoUri);
    }
}