A magnifier app for Google Pixel 10 (Android 16+) built with Kotlin, Jetpack Compose, and Material 3.
🤖 Built entirely with AI — This application was designed, coded, and documented entirely using AI-assisted development (Windsurf Cascade).
Sideload the APK onto a Pixel 10 (or any device running Android 14+). You may need to enable Install from unknown sources in your device settings.
- Live camera preview with CameraX (edge-to-edge, rear camera default)
- Zoom — Material 3 slider (1x–10x) + pinch-to-zoom gesture
- Flashlight toggle — CameraX torch mode (on/off)
- Camera flip — front/rear lens switch
- Capture / Freeze Frame — dedicated FAB; freezes live feed
- Snapshot overlay — pinch-to-zoom frozen image, dismiss / save / share
- Brightness / Exposure — slider adjusts camera exposure compensation
- Color filters — Normal, High Contrast, Inverted, Grayscale, Warm Tint
- Auto-focus lock — tap to focus, toggle to lock
- Screen-as-light mode — full white screen at max brightness
- Haptic feedback — vibration on capture, toggle, zoom limits
- Quick Settings tile — launch from notification shade
- Home screen widget — 1×1 one-tap launch
| Layer | Choice |
|---|---|
| Language | Kotlin 2.1 |
| UI | Jetpack Compose + Material 3 (Material You) |
| Camera | CameraX |
| Widget | Glance |
| Build | Gradle Kotlin DSL, AGP 8.7 |
| Min SDK | 36 (Android 16) |
| Architecture | Single-Activity, MVVM (ViewModel + StateFlow) |
- Open the project in Android Studio Ladybug or newer
- Sync Gradle
- Connect a Pixel 10 or use API 36 emulator
- Run the
appconfiguration
app/src/main/java/com/dashingmagnifier/app/
├── MainActivity.kt
├── DashingMagnifierApp.kt
├── ui/
│ ├── theme/ — Material 3 theme, colors, typography
│ ├── camera/ — CameraScreen, CameraViewModel
│ ├── snapshot/ — SnapshotOverlay
│ ├── filters/ — FilterBottomSheet, FilterType
│ └── components/ — ZoomSlider, BrightnessSlider, ToolbarButton, CaptureButton
├── util/ — MediaStoreHelper
├── service/ — MagnifierTileService (Quick Settings)
└── widget/ — MagnifierWidget (Glance)