Gravar vídeos

Observação: esta página se refere à classe Camera, que foi descontinuada. Recomendamos usar CameraX ou, para casos de uso específicos, Camera2. O CameraX e o Camera2 oferecem suporte ao Android 5.0 (nível 21 da API) e versões mais recentes.

Este guia explica como capturar vídeos usando aplicativos de câmera.

Seu aplicativo tem uma função, e integrar vídeos é só uma pequena parte dele. O objetivo é gravar vídeos com o mínimo de problemas possível, e não reinventar a filmadora. A maioria dos dispositivos Android já tem um aplicativo de câmera que grava vídeos. Neste guia, você vai usar esse aplicativo para gravar vídeos por você.

Confira estes recursos relacionados:

Solicitar o recurso de câmera

Para informar que seu aplicativo depende de uma câmera, coloque uma tag <uses-feature> no arquivo de manifesto:

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

Caso seu aplicativo use, mas não precise de uma câmera para funcionar, configure android:required como false. Dessa forma, o Google Play vai permitir que dispositivos sem câmera façam o download do seu aplicativo. Será sua responsabilidade verificar a disponibilidade da câmera no momento da execução, chamando hasSystemFeature(PackageManager.FEATURE_CAMERA). Se uma câmera não estiver disponível, os recursos da câmera vão precisar ser desativados.

Assistir o vídeo

O aplicativo Câmera do Android retorna o vídeo na Intent entregue ao método onActivityResult() como um Uri que aponta para o local do vídeo no armazenamento. O código abaixo extraí o vídeo e o exibe em 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);
    }
}