Skip to main content
Version: 1.0.0

Technologies

List of main technologies, libraries and frameworks used in the Mirror Android app.


Language, Runtime & Build​

  • Kotlin (2.0.20) — primary development language.
  • Jetpack Compose — modern declarative UI toolkit used for the app’s screens and widgets.
  • Gradle (AGP 8.7.1) — build system; Java 17 compatibility.
  • ViewBinding — interoperability for hybrid Compose + XML layouts.
  • Proguard/R8 — enabled for release builds with optimized rules.

App Architecture​

  • Activities:

    • Journey Activity — navigation until glasses are selected.
    • Try-On Activity — integrates Mediapipe (face landmarker), CameraX, and WebView with a local React-based renderer.
  • Navigation:

    • Jetpack Navigation Compose for handling flows.
    • Orientation-aware UI: layouts adapt between portrait and landscape modes, controlled by configuration in Firebase.
  • Persistence:

    • Realm Kotlin (3.0.0) used for local caching of downloaded assets (images, 3D models, videos).
    • Local file paths stored in Realm ensure offline-first operation.

Core Libraries & Frameworks​

Firebase​

  • Firestore — stores mirror configuration (brands, orientations, assets).
  • Storage — source for media files (images, videos, 3D assets).
  • BoM (33.5.1) — centralized dependency management.

AR & Vision​

  • Mediapipe Tasks Vision (0.10.18) — face landmark detection in Kotlin.
  • SceneView (2.2.1) — renders transparent-background 3D models (glasses overlay).
  • CameraX (1.4.0) — provides camera feed to Mediapipe and AR renderer.

Media & Playback​

  • AndroidX Media3 ExoPlayer (1.4.0) — video playback for immersive intro and looping showcase.
  • Dash extension for adaptive streaming.
  • Media3 UI for controls (customized for kiosk use).

UI & Imaging​

  • Material3 — Compose Material components.
  • Coil (2.2.2) — image loading, includes SVG support for logos/backgrounds.
  • AndroidSVG — background removal & SVG parsing.
  • QR Generator — generates QR codes for mirror pairing or user interactions.

Networking & Local Server​

  • NanoHTTPD (2.3.1) — lightweight embedded web server.
  • WebSockets — real-time communication between the Kotlin app and the local React frontend in WebView.
  • Kotlinx Serialization (1.7.1) — JSON serialization/deserialization for config and data exchange.

Testing​

  • JUnit 4.13.2 — unit testing.
  • AndroidX Test / Espresso — UI instrumentation.
  • Compose UI Test — for validating composables and flows.

Performance & UX​

  • Offline-first strategy: all assets downloaded upfront → Realm stores local paths → app runs without network.
  • Orientation-aware layouts: portrait vs. landscape flows differ, controlled by Firebase mirror config.
  • Transparent WebView overlay: React-based renderer sits above camera feed for lifelike AR glasses try-on.
  • Video-driven entry: ExoPlayer handles seamless looping showcase after synchronization.