Hadrian Burkhardt 9c295532df privacy policy
2026-05-10 01:09:25 +02:00
2026-02-09 01:31:43 +00:00
2026-05-10 01:09:25 +02:00
2026-02-09 02:19:10 +00:00
2026-05-08 18:30:42 +02:00
2026-02-13 00:07:47 +01:00
2026-02-09 02:19:10 +00:00
2026-05-10 01:09:25 +02:00
2026-05-10 01:09:25 +02:00
2026-02-26 05:11:34 +01:00

Private QR Scanner (MVP)

Offline-first, ad-free QR/barcode scanner built with Kotlin, Jetpack Compose, CameraX, and on-device ML Kit.

Platform Assumption

  • Android mobile app first (phone/tablet).
  • Prefer Android-compatible libraries and APIs for parsing/integration decisions.

Architektur

  • ui/: Compose screens/components + ViewModels (MVVM)
    • ui/screens/ScannerScreen.kt: Scanner-Orchestrierung (Camera, Overlay, Actions, Bottom Sheet)
    • ui/screens/ScannerResultCards.kt: strukturierte Ergebnis-Visualisierung (inkl. Kontaktkarten)
    • ui/screens/ScannerGalleryPreviewDialog.kt: Bild-Scan-Vorschau mit Zoom/Pan + Live-Re-Detection
    • ui/screens/ScannerOverlayComponents.kt: Overlay-Toggles, Batch-Panel, Permission-Content
    • ui/screens/BarcodeTypeMapper.kt: ML-Kit valueType -> lesbarer Typ
  • data/: ML Kit analyzer, Room entities/DAO, repository
  • domain/: app models (ScanResult, ScanRecord, UrlRiskResult)
  • settings/: DataStore preferences (history + warnings toggles)
  • util/: URL risk scoring, clipboard, intents, content parser (vCard/MECARD/WIFI/VEVENT)

Datenschutz

  • Keine Werbung
  • Keine Tracker/Analytics/Crashlytics
  • Kein Backend, keine Servercalls
  • Keine INTERNET-Permission im Manifest
  • Datenschutzerklärung in der App und als PRIVACY_POLICY.md

MVP Features

  • Home: Scan-Button, lokaler Historie-Toggle (Default: OFF), Datenschutz-Dialog
  • Scanner: CameraX Live-Preview, Fadenkreuz-Overlay, Taschenlampe, Debounce gegen Doppelscans, Live-Hinweise zu erkannten/lesbaren Codes
  • Bild-Scan: Multi-Code-Erkennung aus einem Bild mit Ergebnis-Auswahl
  • Ergebnis-Bottom-Sheet: strukturierte Anzeige + Copy/Share/Open/Scan again + kontextspezifische Aktionen
  • Kontakt-Workflows: vCard/MECARD parsen, visuelle Kontaktkarte, "Zu Kontakten hinzufügen"
  • Office/Admin-Workflows: Wi-Fi QR parsen + Einstellungen öffnen, Kalender-QR parsen + Event anlegen
  • URL-Sicherheitswarnung bei lokalem riskScore >= 3 (kein Blocken, nur Hinweis)
  • Historie: Suche, Swipe-to-delete, Alles-löschen, Detailansicht mit Volltext
  • Einstellungen: Historie an/aus (mit optionalem Löschen), Warnungen an/aus, About-Infos

Voraussetzungen

  • Android Studio (aktuell stabil)
  • JDK 17+
  • Android SDK für compileSdk = 35

Build & Run

  1. Projekt in Android Studio öffnen.
  2. Gradle Sync ausführen.
  3. App auf Emulator/Device (API 24+) starten.

CLI:

./gradlew :app:assembleDebug
./gradlew :app:installDebug

Tests

  • Unit tests:
./gradlew testDebugUnitTest
  • Wichtige Test-Suites:
    • app/src/test/java/com/clean/scanner/util/ScanContentParsersTest.kt
    • app/src/test/java/com/clean/scanner/util/HistoryExportFormatterTest.kt
    • app/src/test/java/com/clean/scanner/util/UrlRiskScorerTest.kt
    • app/src/test/java/com/clean/scanner/ui/ScannerViewModelTest.kt
    • app/src/androidTest/java/com/clean/scanner/util/IntentsTest.kt
S
Description
No description provided
Readme 246 KiB
Languages
Kotlin 100%