Kapitel 1: Willkommen bei Android Camera2
Erfahren Sie, warum Android Camera2 wichtig ist, wie es sich im Vergleich zu Camera1 und CameraX verhält, was es ermöglicht und was Sie in dieser Serie entwickeln werden.
Kapitel 2: Smartphone-Kameras verstehen
Erkunden Sie die Hardware des Kameramoduls in jedem Smartphone: das Objektiv, den Bildsensor, den ISP-Prozessor, den Unterschied zwischen RAW und JPEG, Multi-Kamera-Designs und den vollständigen Weg von den Photonen zum gespeicherten Foto.
Kapitel 3: Was moderne Smartphone-Kameras können
Ein Rundgang durch die computergestützten und optischen Funktionen moderner Telefone: HDR, Porträt-Bokeh, Nachtmodus, Zeitlupe, Ultraweitwinkel, Tele, Makro und wie die computergestützte Fotografie Hardware und Software verschmilzt.
Kapitel 4: Das eigene Telefon erkunden
Verwenden Sie die Begleit-App Android Camera Parameters, um Ihr eigenes Gerät zu inspizieren. Lernen Sie, Kamera-IDs zu lesen, Hardware-Levels zu prüfen, Kameras aufzuzählen, unterstützte Formate, Bildraten, Zoombereiche und die RAW-Fähigkeit zu inspizieren.
Kapitel 5: Erstellen Ihres ersten Camera2-Projekts
Richten Sie ein komplettes Android Camera2-Projekt von Grund auf neu ein. Erfahren Sie mehr über Kameraberechtigungen, die Initialisierung des CameraManager, Hintergrund-Threading mit HandlerThread und die für die TextureView-Hardwarebeschleunigung erforderliche Projektkonfiguration.
Kapitel 6: Kameras entdecken
Zählen Sie jede Kamera auf einem Android-Gerät auf und fragen Sie sie mit CameraCharacteristics ab. Lernen Sie die Semantik von Kamera-IDs, die Ausrichtung von Objektiven (Vorderseite/Rückseite/extern), externe USB-OTG-Kameras und die Hierarchie der Hardware-Level von LEGACY bis LEVEL_3 kennen.
Kapitel 7: Eine Kamera öffnen
Stellen Sie eine Live-Verbindung zu einem Kameragerät mit openCamera() her. Beherrschen Sie den CameraDevice-Lebenszyklus, implementieren Sie den StateCallback mit onOpened/onDisconnected/onError, integrieren Sie das Öffnen/Schließen mit Activity onPause/onResume und handhaben Sie jeden CameraAccessException-Fehlercode mit Semaphore-basierter Nebenläufigkeitssteuerung.
Kapitel 8: Die Kameravorschau anzeigen
Rendern Sie Live-Kamerabilder auf dem Bildschirm unter Verwendung von TextureView, SurfaceTexture, Surface und CameraCaptureSession. Implementieren Sie den SurfaceTextureListener, korrigieren Sie das Seitenverhältnis mit Matrix-Transformationen in configureTransform, erstellen Sie einen TEMPLATE_PREVIEW CaptureRequest und starten Sie den Vorschaustrom mit setRepeatingRequest.
Kapitel 9: Fotos aufnehmen
Nehmen Sie hochwertige Standbilder mit Camera2 unter Verwendung von ImageReader (JPEG), Precapture-AE-Trigger und der CaptureCallback-Zustandsmaschine auf. Speichern Sie Fotos mit dem Scoped-Storage-kompatiblen MediaStore (Android 10+) und dem Legacy-FileOutputStream. Denken Sie immer daran, den Image-Puffer zu schließen.
Kapitel 10: Die Camera2-Pipeline
Tiefer Einblick in die Camera2-Pipeline-Architektur – CaptureRequest, CaptureResult, Request-Warteschlangen, Ergebnis-Callbacks und der End-to-End-Ablauf von der Einreichung der Anforderung bis zur HAL-Verarbeitung und den Ergebnissen.
Kapitel 11: Aufnahme-Typen
Lernen Sie die drei Camera2-Aufnahme-Typen kennen – One-Shot (capture), Burst (captureBurst) und Repeating (setRepeatingRequest) – sowie die integrierten Vorlagen (TEMPLATE_PREVIEW, TEMPLATE_STILL_CAPTURE, TEMPLATE_RECORD und weitere).
Kapitel 12: Tiefer Einblick in CameraCharacteristics
Meistern Sie CameraCharacteristics — die unveränderlichen statischen Metadaten, die jede Kamera beschreiben, bevor Sie sie öffnen. Hardware-Level (LEGACY, LIMITED, FULL, LEVEL_3, EXTERNAL), Capability-Flags, Organisation der Metadaten-Schlüssel und Laufzeit-Fähigkeitsabfragen.
Kapitel 13: Belichtung
Meistern Sie die Grundlagen der fotografischen Belichtung – das Belichtungsdreieck aus ISO, Verschlusszeit und Blende. Verstehen Sie EV-Stufen, die Sunny-16-Regel und wie verschiedene Kombinationen dieselbe Belichtung mit kreativen Kompromissen erzeugen.
Kapitel 14: Manuelle Belichtung in Camera2
Übernehmen Sie die volle kreative Kontrolle über die Belichtung mit der Android Camera2 API. Lernen Sie, die Belichtungsautomatik zu deaktivieren, den manuellen ISO-Wert über SENSOR_SENSITIVITY einzustellen, die Verschlusszeit in Nanosekunden mit SENSOR_EXPOSURE_TIME zu steuern und bauen Sie funktionierende Kotlin-Beispiele für Zeitraffer, Langzeitbelichtungen und Belichtungsreihen.
Kapitel 15: Fokus
Meistern Sie sowohl den automatischen als auch den manuellen Fokus in Android Camera2. Verstehen Sie AF-Modi, die AF-Zustandsmaschine, One-Shot-Trigger-and-Capture-Sequenzen, manuellen Fokus mit LENS_FOCUS_DISTANCE in Dioptrien, hyperfokale Distanz und den Aufbau eines Fokus-SeekBar-Schiebereglers in Kotlin.
Kapitel 16: Weißabgleich & Farbe
Steuern Sie die Farbe in Android Camera2 mit Voreinstellungen für den automatischen Weißabgleich und manueller Farbkorrektur. Lernen Sie AWB-Modi, Farbtemperatur (2000 K – 10000 K), 3×3-Farbtransformationen, COLOR_CORRECTION_GAINS und funktionierenden Kotlin-Code für warmtönige Sonnenuntergangs-Voreinstellungen und den voll manuellen Weißabgleich kennen.
Kapitel 17: Die 3A-Pipeline
Orchestrieren Sie Auto Exposure (AE), Auto Focus (AF) und Auto White Balance (AWB) zu einer zuverlässigen Aufnahmesequenz für die Standbildfotografie. Lernen Sie den Precapture-Trigger, Blitzmodi sowie die AE/AF-Zustandsmaschinen kennen und erstellen Sie produktionsreifen Kotlin-Code, der alle drei A's vor jeder Aufnahme koordiniert.
Kapitel 18: RAW-Fotografie
Meistern Sie das RAW_SENSOR-Format, die Erstellung von DNG-Dateien mit DngCreator, Bayer-Muster und die gleichzeitige RAW+JPEG-Aufnahme in der Android Camera2 API.
Kapitel 19: High-Speed-Video
Erstellen Sie Zeitlupenaufnahmen mit 120 fps und 240 fps unter Verwendung von CameraConstrainedHighSpeedCaptureSession, createHighSpeedRequestList und den FPS-Bereichen der StreamConfigurationMap in der Android Camera2 API.
Kapitel 20: Multi-Kamera
Erforschen Sie logische Multi-Kamera-Geräte ab Android 9, physische Kamera-IDs, APPROXIMATE vs. CALIBRATED Sensor-Synchronisation, nahtloses Umschalten des Zooms und gleichzeitige Aufnahme über zwei physische Kameras mittels OutputConfiguration.setPhysicalCameraId() in der Camera2 API.
Kapitel 21: HDR & Ultra HDR
Implementieren Sie HDR10- und HLG-Video über DynamicRangeProfiles sowie Android 14 JPEG_R (Ultra HDR ISO 21496-1) Standbildaufnahmen mit einer SDR-Primärbild + Gain-Map-Architektur für abwärtskompatible Fotos mit hohem Dynamikumfang.
Kapitel 22: Kamera-Erweiterungen
Verwenden Sie die CameraExtensionSession für OEM-beschleunigte computergestützte Fotografie: Nachtmodus, Bokeh-Porträtmodus, HDR-Erweiterung, Gesichtsretusche und Automatikmodus. Fragen Sie die CameraExtensionCharacteristics ab, verwalten Sie die Latenz und vergleichen Sie die Architektur von Standard- vs. Extension-Sitzungen.
Kapitel 23: Zero Shutter Lag & Reprocessing
Erstellen Sie Zero Shutter Lag (ZSL) mit zirkulärer YUV/PRIVATE-Pufferung, CONTROL_CAPTURE_INTENT_ZERO_SHUTTER_LAG, reprocessable Aufnahmesitzungen über InputConfiguration, ImageWriter Frame-Reinjektion und createReprocessCaptureRequest für aufwendige ISP-Verarbeitung nach der Aufnahme. Behandelt auch switchToOffline() für die Kontinuität der Hintergrundverarbeitung.
Kapitel 24: CameraX
Meistern Sie CameraX, die Lifecycle-bewusste Kamera-Bibliothek von Jetpack, die Camera2 kapselt. Lernen Sie die UseCase-Architektur, Camera2Interop zum Einschleusen manueller Parameter und ein Entscheidungs-Framework für die Wahl zwischen CameraX und Camera2 kennen.
Kapitel 25: Native Kameraentwicklung
Werden Sie nativ mit dem Android NDK Kamera-Stack. Verwenden Sie ACameraManager, um Kameras aus C++ zu öffnen, binden Sie den AHardwareBuffer-Speicher direkt als Vulkan-Texturen für Zero-Copy-AR ein und verstehen Sie die Interoperabilität von OpenGL/Vulkan für 60-fps-Pipelines. Enthält den Kontext der EVS-Migration im Automobilbereich.
Kapitel 26: Asynchrone Kameraprogrammierung
Bändigen Sie die Callback-Hölle von Camera2 mit Kotlin Coroutines und Flow. Lernen Sie suspendCancellableCoroutine für One-Shot-Operationen (openCamera, createCaptureSession, capture), callbackFlow für kontinuierliche ImageReader- und CaptureResult-Streams, Combine-Operatoren für reaktive UIs und Muster zur Thread-Sicherheit kennen, um ANRs und Deadlocks zu verhindern.
Kapitel 27: Kameratests
Der umfassende Leitfaden für Android-Kameratests. Verstehen Sie Camera ITS (Image Test Suite), was OEMs vor der Auslieferung validieren (Funktionskombinationen, Szenentests, Sensor-Fusion), manuelle CTS-Verifier-Tests und wie Sie Ihre eigenen Instrumentierungstests mit Mockito-Mocks und parametrisierten Hardware-Level-Tests schreiben, die in der CI laufen.
Kapitel 28: Camera2-Architektur
Das große Architektur-Finale von Camera2. Reisen Sie durch den gesamten Stack, von Ihrer Kotlin-App über Binder-IPC, das Framework, den CameraService in Native, Camera3Device, HAL3 mit camera3_device_t, den V4L2-Kerneltreiber bis hin zum physischen Sensor, ISP, VCM-Objektiv und der Blitz-Hardware. Enthält die Treble-HAL-Anforderung, den LEGACY HAL1-Wrapper und Android 15's CameraDeviceSetup. Komplette Map der Schichten für die Reise des Lesers.
Camera Metadata Encyclopedia
Complete reference guide for all essential CameraCharacteristics metadata keys including Sensor, Lens, Control, Scaler, Request, Flash, JPEG, Statistics, and Info categories.