Android Academy · Lektion

Überblick über CameraX

Warum CameraX den alten Kamera-APIs vorzuziehen ist

Lektion 1 von 413 Schritte

Überblick über CameraX ist eine kostenlose Android Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Android Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Android Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum CameraX?

Eine Kamera zu einer Android-App hinzuzufügen, war früher mühsam. Die alte API android.hardware.camera2 ist leistungsfähig, aber äußerst ausführlich und verhält sich auf den Tausenden tatsächlich verwendeten Geräten unterschiedlich.

CameraX ist eine Jetpack-Bibliothek, die auf Camera2 aufsetzt und Ihnen eine einfache, lebenszyklusbewusste und konsistente API bietet. In diesem Kurs verwenden Sie CameraX, um eine Live-Vorschau anzuzeigen, Fotos aufzunehmen und Videos aufzuzeichnen.

Was CameraX löst

CameraX wurde mit drei Zielen entwickelt:

  • Einfache Nutzung – deutlich weniger Boilerplate als bei Camera2.
  • Konsistenz – Google testet CameraX in einer großen Geräteumgebung, sodass sich ungewöhnliche Geräte vorhersehbar verhalten.
  • Lebenszyklusbewusstsein – die Kamera wird automatisch mit dem Lebenszyklus Ihres Bildschirms gestartet und beendet, sodass die Kamera nicht ungewollt geöffnet bleibt.

Sie beschreiben, was Sie möchten (eine Vorschau, ein Foto oder ein Video), und CameraX bestimmt, wie dies auf dem aktuellen Gerät umgesetzt wird.

Die drei zentralen Anwendungsfälle

CameraX basiert auf Anwendungsfällen. Ein Anwendungsfall ist ein in sich geschlossener Teil der Kamerafunktionalität. Die drei wichtigsten sind:

  • Preview – zeigt auf dem Bildschirm, was die Kamera sieht.
  • ImageCapture – nimmt ein Foto auf.
  • VideoCapture – zeichnet ein Video auf.

Sie erstellen die benötigten Anwendungsfälle und binden sie gemeinsam an die Kamera.

// You create the use cases you need:
val preview = Preview.Builder().build()
val imageCapture = ImageCapture.Builder().build()
// Later you bind them to a lifecycle and a camera.

Abhängigkeiten hinzufügen

CameraX wird als mehrere Artefakte bereitgestellt. Sie fügen diese der Datei build.gradle.kts Ihres Moduls hinzu. Eine typische Konfiguration umfasst die Kernbibliothek, das Camera2-Backend, die Lebenszyklusintegration und Hilfsfunktionen für Ansichten.

Verwenden Sie für alle CameraX-Artefakte dieselbe Version, um Konflikte zu vermeiden.

dependencies {
    val cameraxVersion = "1.3.4"
    implementation("androidx.camera:camera-core:$cameraxVersion")
    implementation("androidx.camera:camera-camera2:$cameraxVersion")
    implementation("androidx.camera:camera-lifecycle:$cameraxVersion")
    implementation("androidx.camera:camera-view:$cameraxVersion")
    implementation("androidx.camera:camera-video:$cameraxVersion")
}

Berechtigungen deklarieren

Um die Kamera zu verwenden, müssen Sie die Berechtigung CAMERA in Ihrer AndroidManifest.xml deklarieren. Wenn Sie auch Videos aufzeichnen, benötigen Sie möglicherweise RECORD_AUDIO.

Dies sind Laufzeitberechtigungen – ihre Deklaration allein reicht nicht aus. Sie müssen die Person auch zur Laufzeit danach fragen (dies wird in späteren Lektionen behandelt).

<!-- AndroidManifest.xml -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-feature
    android:name="android.hardware.camera.any"
    android:required="false" />

Der CameraProvider

Der Einstiegspunkt in CameraX ist ProcessCameraProvider. Er verbindet die Anwendungsfälle mit der Kamera und dem Lebenszyklus Ihres Bildschirms.

Sie rufen ihn asynchron mit getInstance() ab, das ein ListenableFuture zurückgibt. In Kotlin können Sie innerhalb einer Coroutine await() verwenden.

import androidx.camera.lifecycle.ProcessCameraProvider
import androidx.camera.core.ExperimentalGetImage

suspend fun Context.getCameraProvider(): ProcessCameraProvider {
    return ProcessCameraProvider.getInstance(this).await()
}

Anwendungsfälle an einen Lebenszyklus binden

Sobald Sie den Provider haben, binden Sie Ihre Anwendungsfälle an einen LifecycleOwner und einen CameraSelector (die Front- oder Rückkamera).

Da die Bindung den Lebenszyklus berücksichtigt, öffnet CameraX die Kamera automatisch, wenn Ihr Bildschirm sichtbar ist, und schließt sie, wenn er nicht sichtbar ist – eine manuelle Bereinigung ist nicht erforderlich.

val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA

cameraProvider.unbindAll()
cameraProvider.bindToLifecycle(
    lifecycleOwner,
    cameraSelector,
    preview,
    imageCapture
)

Eine Kamera auswählen

Ein CameraSelector legt fest, welche physische Kamera verwendet werden soll. Die beiden häufigsten Optionen sind die standardmäßige Rück- und die standardmäßige Frontkamera.

Sie können auch einen benutzerdefinierten Selektor erstellen, um bestimmte Eigenschaften vorauszusetzen. Für fast jede App reichen jedoch die Standardeinstellungen aus.

// Back camera (most common for photos)
val back = CameraSelector.DEFAULT_BACK_CAMERA

// Front camera (selfies, video calls)
val front = CameraSelector.DEFAULT_FRONT_CAMERA

// Toggle between them by swapping the selector and re-binding.

PreviewView: Die Anzeigeoberfläche

CameraX rendert die Live-Vorschau in eine PreviewView. Dabei handelt es sich um eine gewöhnliche Android-View, die Oberfläche, Skalierung und Drehung für Sie verwaltet.

In Jetpack Compose binden Sie sie mit AndroidView ein. Damit können Sie eine klassische View innerhalb eines Composable platzieren. In der nächsten Lektion richten Sie dies vollständig ein.

AndroidView(
    factory = { context ->
        PreviewView(context).apply {
            scaleType = PreviewView.ScaleType.FILL_CENTER
        }
    },
    modifier = Modifier.fillMaxSize()
)

Lebenszyklusbewusstsein in der Praxis

Der größte praktische Vorteil von CameraX ist das Lebenszyklusbewusstsein. Mit Camera2 mussten Sie die Kamera manuell in onResume öffnen und in onPause freigeben. Wenn Sie dies vergaßen, kam es zu Abstürzen oder einer blockierten Kamera.

Bei CameraX erledigt das Framework all dies, sobald Sie bindToLifecycle verwenden. Wenn die Person zu einem anderen Bildschirm navigiert, wird die Kamera automatisch freigegeben. Bei der Rückkehr wird sie erneut geöffnet.

// No manual open/close needed.
// bindToLifecycle ties the camera to the screen's
// lifecycle, so it follows onStart/onStop for you.
cameraProvider.bindToLifecycle(lifecycleOwner, selector, preview)

Ihr Denkmodell

Behalten Sie für den restlichen Kurs dieses Bild im Kopf:

  • Rufen Sie einen ProcessCameraProvider ab.
  • Erstellen Sie die benötigten Anwendungsfälle (Preview, ImageCapture, VideoCapture).
  • Wählen Sie einen CameraSelector aus.
  • Verbinden Sie alles mit bindToLifecycle.

Jede CameraX-Funktion ist lediglich eine Variante dieser vier Schritte.

Kurze Überprüfung

Testen Sie Ihr Verständnis der Grundlagen von CameraX.

Zusammenfassung

Sie verstehen jetzt das große Ganze von CameraX:

  • CameraX kapselt Camera2 in einer einfacheren, konsistenteren und lebenszyklusbewussten API.
  • Die Bibliothek basiert auf Anwendungsfällen: Preview, ImageCapture und VideoCapture.
  • Sie fügen die CameraX-Artefakte hinzu, deklarieren die Berechtigung CAMERA, rufen einen ProcessCameraProvider ab und verwenden bindToLifecycle.
  • Ein CameraSelector wählt zwischen Front- und Rückkamera, während eine PreviewView das Kamerabild anzeigt.

Als Nächstes richten Sie eine echte Live-Vorschau auf dem Bildschirm ein.

Kostenlos starten

Lerne Kotlin mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
36
Lektionen
152

Häufig gestellte Fragen

Ist die Lektion „Überblick über CameraX“ kostenlos?

Ja — der vollständige Text von „Überblick über CameraX“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Android Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Android Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Überblick über CameraX“?

Warum CameraX den alten Kamera-APIs vorzuziehen ist Du übst Android Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Android Academy zu starten?

Keine Vorkenntnisse erforderlich. Android Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „Überblick über CameraX“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Android Academy-Lektion Code schreiben und ausführen?

Ja. Jede Android Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Überblick über CameraX
  2. Eine Kameravorschau anzeigen
  3. Fotos aufnehmen
  4. Videos aufnehmen
← Zurück zu Android Academy