Skip to content

Repository files navigation

SmartShots

Android app that makes screenshots searchable. Syncs device screenshots, runs on-device OCR, and lets you search, tag, and browse by extracted text.

Features

  • Auto-sync — detects new screenshots via MediaStore, adds them to the database automatically
  • On-device OCR — English/Latin via ML Kit, Arabic via Tesseract (no cloud, no data leaves the device)
  • Full-text search — find any screenshot by its content
  • Tags — auto-extracted from OCR text
  • Color indexing — dominant color extracted per screenshot
  • Background processing — foreground service handles OCR queue while app is closed

Tech Stack

Language Kotlin
Min SDK 28 (Android 9)
Target SDK 34 (Android 14)
UI XML + ViewBinding
Database Room
OCR ML Kit Text Recognition + Tesseract4Android
Background Foreground Service + WorkManager
Image loading Glide

Building

Requires JDK 17 and Android SDK (API 34).

./gradlew assembleDebug

Install on a connected device:

./gradlew installDebug

Permissions

The app requests at runtime:

  • READ_MEDIA_IMAGES — read device screenshots
  • POST_NOTIFICATIONS — show OCR progress notification
  • REQUEST_IGNORE_BATTERY_OPTIMIZATIONS — keep background processing alive

Project Structure

app/src/main/java/com/smartshots/
├── data/           # Room DB, DAOs, repository, MediaStore sync
├── domain/         # Models, use cases
├── processing/     # OCR engines, image utilities, text processing
├── services/       # Background OCR service, sync service
├── ui/             # Activities, fragments, adapters
├── utils/          # Service manager, helpers
└── workers/        # WorkManager workers

About

An app to make screenshots searchable

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages