CameraX für Kotlin: Komplettes Tutorial mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

CameraX für Kotlin: Komplettes Tutorial mit Beispielen

1. Was ist CameraX und warum braucht man es?

CameraX ist eine Bibliothek von Google für die Kameraentwicklung auf Android, die in Kotlin und Java geschrieben ist. Sie bietet eine einfache und konsistente API für die Arbeit mit der Kamera und abstrahiert die Komplexität der Low-Level-Camera2-API. CameraX löst viele Probleme, mit denen Entwickler konfrontiert sind: Unterstützung verschiedener Android-Versionen, Kompatibilität mit unterschiedlichen Geräteherstellern, Verwaltung des Activity/Fragment-Lebenszyklus und Bildschirmdrehungen.

Warum CameraX verwenden? Erstens vereinfacht es die Entwicklung enorm: Statt hunderter Codezeilen für die Kamerakonfiguration, Vorschau und Bildaufnahme schreiben Sie nur 10-20 Zeilen. Zweitens gewährleistet es Kompatibilität mit Geräten ab Android 5.0 (API 21). Drittens verarbeitet CameraX automatisch komplexe Szenarien wie das Wechseln zwischen Kameras, Orientierungsänderungen und das Speichern des Zustands bei Bildschirmdrehung. Viertens enthält die Bibliothek integrierte Erweiterungen (Extensions) wie HDR, Nachtmodus und Porträtmodus, die auf den meisten Geräten ohne zusätzliche Konfiguration funktionieren.

CameraX ist ideal für Apps, die eine schnelle Kameraintegration benötigen: Messenger, soziale Netzwerke, QR-Code-Scanner, Videoanruf-Apps und einfache Kameras. Wenn Sie eine professionelle App mit vollständiger Kontrolle über jedes Bild benötigen (z. B. für Computer Vision oder professionelle Videoaufnahmen), sollten Sie Camera2 in Betracht ziehen. Für 90% der Anwendungsfälle ist CameraX jedoch die beste Wahl.

2. Installation

CameraX wird über das Gradle-Build-System installiert. Fügen Sie für ein Kotlin-Projekt die Abhängigkeiten in Ihre build.gradle-Datei (Module: app) ein.

Der genaue Gradle-Code:

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}"

    // Für Erweiterungen (HDR, Nachtmodus usw.)
    implementation "androidx.camera:camera-extensions:${camerax_version}"

    // Für Video
    implementation "androidx.camera:camera-video:${camerax_version}"
}

Stellen Sie außerdem sicher, dass in Ihrer build.gradle (Project) das Google-Repository angegeben ist:

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

Nach dem Hinzufügen der Abhängigkeiten synchronisieren Sie Ihr Projekt (Sync Now).

3. Schnellstart – Minimales funktionierendes Beispiel

Erstellen Sie eine neue Activity oder ein neues Fragment. Fügen Sie im Layout (XML) ein PreviewView hinzu:

<?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>

Jetzt der Code für die Activity in 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                    

Empfehlungen