Enregistrer des vidéos

Remarque : La classe Camera, qui est mentionnée sur cette page, est obsolète. Nous vous recommandons d'utiliser CameraX ou, dans des cas d'utilisation spécifiques, Camera2. CameraX et Camera2 sont compatibles avec Android 5.0 (niveau d'API 21) ou version ultérieure.

Cette leçon explique comment enregistrer une vidéo à l'aide d'applications Appareil photo existantes.

Votre application a une mission, et l'intégration de vidéos n'en est qu'une partie infime. Vous voulez enregistrer vos vidéos facilement, sans réinventer le caméscope. Heureusement, la plupart des appareils Android ont déjà une application Appareil photo pour enregistrer des vidéos. Dans cette leçon, vous allez apprendre à faire en sorte qu'elle le fasse pour vous.

Consultez les ressources associées suivantes :

Demander la fonctionnalité Appareil photo

Pour annoncer que votre application nécessite un appareil photo, placez une balise <uses-feature> dans le fichier manifeste :

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

Si votre application utilise l'appareil photo, mais n'en a pas besoin pour fonctionner, définissez android:required sur false. De cette façon, Google Play autorisera les appareils sans appareil photo à télécharger votre application. Vous devez ensuite vérifier la disponibilité de l'appareil photo au moment de l'exécution en appelant hasSystemFeature(PackageManager.FEATURE_CAMERA). S'il ne l'est pas, vous devez alors désactiver ses fonctionnalités.

Voir la vidéo

L'application Appareil photo d'Android renvoie la vidéo fournie dans l'Intent envoyé à onActivityResult() en tant que Uri pointant vers l'emplacement vidéo dans l'espace de stockage. Le code suivant récupère cette vidéo et l'affiche dans une 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);
    }
}