Skip to content

Paradoxdov/FadeSnap

Repository files navigation

FadeSnap

Android-приложение на Kotlin + Jetpack Compose. Камера делает фото в одну из двух папок:

  • Temp/ — файлы автоматически удаляются через 24ч (WorkManager).
  • Keep/ — хранятся навсегда.

Плюс наблюдение за скриншотами: при каждом новом скриншоте приходит уведомление с кнопками «Оставить» / «Через 24ч».


Стек

Слой Библиотека
Язык Kotlin 2.0.20
UI Jetpack Compose (BOM 2024.09.02) + Material3
Навигация Navigation-Compose 2.8.0
Камера CameraX 1.3.4
Фоновая очистка WorkManager 2.9.1
Изображения Coil 2.7.0
Permissions Accompanist 0.34.0
Мин. Android API 29 (Android 10)
Target API 34 (Android 14)

Открыть в Android Studio

Требуется: Android Studio Koala (2024.1.1) или новее + JDK 17.

  1. Распакуйте архив.
  2. File → Open → выберите папку FadeSnap.
  3. Studio напишет "Gradle wrapper is missing" — согласитесь сгенерировать (или выполните в терминале проекта: gradle wrapper --gradle-version 8.7). После этого появятся файлы gradlew, gradlew.bat, gradle/wrapper/gradle-wrapper.jar.
  4. Sync Project with Gradle Files (первая синхронизация качает ~500 МБ зависимостей — это нормально).
  5. Подключите телефон в режиме отладки → Run ▶.

Структура проекта

app/src/main/
├── AndroidManifest.xml              permissions, FileProvider, service
├── java/com/fadesnap/app/
│   ├── FadeSnapApp.kt               Application — schedule cleanup worker
│   ├── MainActivity.kt              Navigation graph
│   ├── storage/PhotoStorage.kt      Temp/ + Keep/ dirs, move, share URI
│   ├── work/
│   │   ├── CleanupWorker.kt         deletes Temp/ files older than 24h
│   │   └── CleanupScheduler.kt      enqueues the PeriodicWork
│   ├── screenshot/
│   │   ├── ScreenshotWatcherService.kt   foreground MediaStore observer
│   │   └── ScreenshotActionReceiver.kt   handles Keep/Fade notif buttons
│   └── ui/
│       ├── theme/  (Color.kt, Theme.kt)
│       └── screens/
│           ├── CameraScreen.kt      live preview + shutter + toggle
│           ├── GalleryScreen.kt     Temp/Keep tabs + actions sheet
│           ├── EditorScreen.kt      rotate + save
│           └── SettingsScreen.kt    screenshot-watcher toggle
└── res/
    ├── drawable/  ic_launcher_background.xml, ic_launcher_foreground.xml
    ├── mipmap-anydpi-v26/  ic_launcher.xml, ic_launcher_round.xml
    ├── values/  strings.xml, colors.xml, themes.xml
    └── xml/  file_paths.xml

Особенности MIUI / Xiaomi / Poco

Для стабильной работы службы наблюдения за скриншотами пользователю нужно РУЧНО включить:

  • Настройки → Приложения → FadeSnap → Автозапуск
  • Экономия батареи → Нет ограничений для FadeSnap

Программно эти настройки включить нельзя — производитель запретил. В SettingsScreen.kt висит соответствующая подсказка.


Что ещё можно улучшить

  • Редактор: кроп, фильтры, рисование поверх (сейчас только поворот).
  • DataStore для постоянного флага «наблюдать за скриншотами».
  • Локализация — strings.xml уже готов к values-en/, values-de/.
  • Обработка RecoverableSecurityException при удалении чужих файлов на Android 11+ (сейчас тихий fallback).

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors