CameraX Kotlin : guide complet avec exemples concrets

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

CameraX pour Kotlin : guide complet avec exemples concrets

1. Qu'est-ce que CameraX et pourquoi l'utiliser ?

CameraX est une bibliothèque développée par Google pour créer des applications de caméra sur Android, écrite en Kotlin et Java. Elle offre une API simple et cohérente pour gérer la caméra, en masquant la complexité des API Camera2 de bas niveau. CameraX résout de nombreux problèmes courants : compatibilité avec différentes versions d'Android, gestion des fabricants d'appareils, cycle de vie des Activity/Fragment et rotation de l'écran.

Pourquoi choisir CameraX ? D'abord, elle simplifie considérablement le développement : au lieu de centaines de lignes de code pour configurer la caméra, l'aperçu et la capture d'images, vous n'en écrivez que 10 à 20. Ensuite, elle assure une compatibilité avec les appareils Android 5.0 (API 21) et supérieurs. De plus, CameraX gère automatiquement des scénarios complexes comme le changement de caméra, l'orientation et la sauvegarde de l'état lors de la rotation. Enfin, la bibliothèque intègre des extensions natives (Extensions) telles que le HDR, le mode nuit et le mode portrait, qui fonctionnent sur la plupart des appareils sans configuration supplémentaire.

CameraX est idéale pour les applications nécessitant une intégration rapide de la caméra : messageries, réseaux sociaux, applications de scan de QR codes, applications de visioconférence et caméras simples. Si vous devez créer une application professionnelle avec un contrôle total sur chaque image (par exemple, pour la vision par ordinateur ou le tournage vidéo professionnel), envisagez plutôt Camera2. Mais pour 90% des cas, CameraX est le meilleur choix.

2. Installation

CameraX s'installe via le système de build Gradle. Pour un projet Kotlin, ajoutez les dépendances dans le fichier build.gradle (Module : app).

Commande exacte (Gradle) :

dependencies {
    // Core CameraX
    def camerax_version = "1.3.1"
    implementation "androidx.camera:camera-core:${camerax_version}"
    implementation "androidx.camera:camera-camera2:${camerax_version}"
    implementation "androidx.camera:camera-lifecycle:${camerax_version}"
    implementation "androidx.camera:camera-view:${camerax_version}"

    // Si vous avez besoin des extensions (HDR, mode nuit, etc.)
    implementation "androidx.camera:camera-extensions:${camerax_version}"

    // Pour la vidéo
    implementation "androidx.camera:camera-video:${camerax_version}"
}

Assurez-vous également que le dépôt Google est spécifié dans build.gradle (Projet) :

allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

Après avoir ajouté les dépendances, synchronisez le projet (Sync Now).

3. Démarrage rapide — exemple minimal fonctionnel

Créez une nouvelle Activity ou un nouveau Fragment. Dans le layout (XML), ajoutez PreviewView :

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.camera.view.PreviewView
        android:id="@+id/viewFinder"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

Voici le code de l'Activity en Kotlin :

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.camera.core.CameraSelector
import androidx.camera.core.Preview
import androidx.camera.lifecycle.ProcessCameraProvider
import androidx.core.content.ContextCompat
import java.util.concurrent.ExecutorService
import java.util.concurrent.Executors

class MainActivity : AppCompatActivity() {
    private lateinit var cameraExecutor: E                    

Recommendations