Android app that makes screenshots searchable. Syncs device screenshots, runs on-device OCR, and lets you search, tag, and browse by extracted text.
- 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
| 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 |
Requires JDK 17 and Android SDK (API 34).
./gradlew assembleDebugInstall on a connected device:
./gradlew installDebugThe app requests at runtime:
READ_MEDIA_IMAGES— read device screenshotsPOST_NOTIFICATIONS— show OCR progress notificationREQUEST_IGNORE_BATTERY_OPTIMIZATIONS— keep background processing alive
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