Zum Hauptinhalt springen

Entwicklerdokumentation

Dieses Dokument bietet einen technischen Überblick über die Anwendung Android Camera Parameters, ihre Architektur und Entwicklungsrichtlinien.

Projektübersicht

Die Anwendung ist ein Diagnosetool zur Inspektion von Android Camera2 CameraCharacteristics. Sie bietet eine moderne, benutzerfreundliche Oberfläche zum Erkunden von Hardware-Levels, Funktionen und rohen Parameterwerten für alle Kameraobjektive auf einem Gerät.

Architektur

Das Projekt folgt dem Architekturmuster MVVM (Model-View-ViewModel) und wurde mit Jetpack Compose für die UI-Schicht erstellt.

Kernkomponenten

CameraParamsActivity

Der einzige Einstiegspunkt der Anwendung.

  • Handhabt Laufzeitberechtigungen (CAMERA).
  • Initialisiert die Compose-UI über setContent.
  • Beherbergt das CameraParamsTheme.

CameraViewModel

Der zentrale Zustandsmanager für die UI.

  • Verwaltet den UiState, der die Liste der Kameras, den ausgewählten Index, kategorisierte Parameter und die Suchanfrage enthält.
  • Funktionserkennung: Enthält Logik in detectFeatureFlags(), um Hardwarefunktionen wie RAW-Unterstützung, OIS und manuelle Belichtung dynamisch zu bestimmen.
  • Kategorisierung: Gruppiert Hunderte von Camera2-Schlüsseln in logische Abschnitte (Sensor, Objektiv usw.) für eine bessere Lesbarkeit.

CameraParamsHelper

Ein Utility-Wrapper um den Android CameraManager.

  • Ruft CameraCharacteristics für bestimmte IDs ab.
  • Bietet spezialisierte Formatierung für komplexe Kameratypen (z. B. Konvertierung von IntArray-Modi in menschenlesbare Zeichenfolgen).

UI-Schicht (Jetpack Compose)

Die UI ist mit Material 3 und einem streng erzwungenen dunklen Thema aufgebaut.

Die App verwendet androidx.navigation.compose, verwaltet in MainScreen.kt.

BildschirmVerantwortung
ÜbersichtHigh-Level-Dashboard mit Zusammenfassungskarte, Hardware-Level und Chips für Hauptmerkmale.
KategorienErweiterbare Liste aller Parameter, gruppiert nach Abschnitten mit Suchfilterung.
Roh (JSON)Syntaxhervorgehobene JSON-Darstellung aller Kameraeigenschaften.
DetailsFokusansicht für einen einzelnen Parameter, die den formatierten Wert und die Rohdaten anzeigt.

Styling

  • Theme: Definiert in Theme.kt.
  • Farben: Primärfarbe #7B61FF (Violett), verwendet für Highlights und primäre Aktionen.
  • Oberfläche: Dunkler Hintergrund #121417 mit #1E1F23-Varianten für Karten.

Wichtige Logik

Dynamische Funktionserkennung

Die "Hauptmerkmale"-Chips auf dem Dashboard sind nicht statisch. Sie werden in CameraViewModel.detectFeatureFlags() berechnet:

  • RAW: Überprüft über REQUEST_AVAILABLE_CAPABILITIES_RAW.
  • OIS: Erkannt, wenn LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION den Wert ON enthält.
  • Manuelle Belichtung: Verfügbar, wenn CONTROL_AE_MODE_OFF unterstützt wird.
  • Manueller Fokus: Aktiviert, wenn LENS_INFO_MINIMUM_FOCUS_DISTANCE größer als 0 ist.

Entwicklungsleitfaden

Voraussetzungen

  • Android Studio Ladybug (or neuer).
  • Kotlin 2.0+ (Das Projekt verwendet das neue Compose Compiler Gradle-Plugin).
  • Mindest-SDK: 21 (Android 5.0).

Hinzufügen einer neuen Kategorie

Um die Gruppierung von Parametern hinzuzufügen oder zu ändern, aktualisieren Sie die Methode getCategoryForKey() in CameraViewModel.kt. Sie verwendet String-Matching auf den Namen der Kameraschlüssel, um sie Kategorien zuzuweisen.

Aktualisieren des Themes

Farben können in Color.kt angepasst werden. Die App ist so konzipiert, dass sie im dunklen Modus am besten aussieht; Änderungen an der hellen Palette sollten sorgfältig getestet werden.