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 Aussi dans la bibliothèque
golang-jwt Go : guide complet avec exemples | PythonLib
Envoi d'email en Rust : bibliothèques lettre et async-smtp pour les mailings
TypeORM pour TypeScript : guide complet avec exemples