📱موبایلسال: ۱۴۰۴نگهداری‌شده

MagicWatch

دستیار هوشمند و جامع اسلامی برای اندروید — اوقات شرعی، اذان، قرآن، ساعت جلالی، AOD و آب‌وهوا

MagicWatch cover
کاتلینJetpack Composeمعماری کلینHiltRoomMedia3 ExoPlayerRetrofitWorkManager

چیست

MagicWatch یک همراه کامل اندرویدی برای عبادات روزمره است که با تمرکز بر سادگی، زیبایی و قابلیت اطمینان طراحی شده. مدیریت زمان (ساعت و تقویم جلالی)، اوقات شرعی دقیق، پخش اذان، استریم قرآن، نمایشگر همیشه‌روشن روی صفحه قفل و ساعت شناور را در یک اپ Compose با Material 3 جمع می‌کند.

کدبیس از معماری کلین پیروی می‌کند: لایه‌های data (Room، DataStore، Retrofit)، domain (مدل‌ها، ریپازیتوری‌ها، یوزکیس‌ها) و presentation (رابط Compose) در ۶۲ فایل کاتلین کاملاً از هم جدا شده‌اند.

ویژگی‌های کلیدی

  • ساعت و تقویم جلالی — تبدیل تاریخ دست‌ساز در JalaliCalendar.kt به‌همراه ویجت.
  • اوقات شرعی — محاسبه محلی با متدهای جهانی و بومی (تهران, ISNA, MWL, …) و ذخیره در Room (PrayerTimeDao) برای استفاده آفلاین.
  • پخش هوشمند اذان — با Media3 ExoPlayer و صدای مؤذنان برتر؛ مدیریت ولوم مخصوص اذان.
  • پخش‌کننده قرآن — استریم مستقیم سوره‌ها با انتخاب قاری (با Retrofit + ExoPlayer).
  • نمایشگر همیشه‌روشن (AOD) — اورلی روی صفحه قفل با ساعت و تاریخ، بیدار شدن با دابل‌تپ و محافظت از سوختگی پیکسل.
  • ساعت شناور — اورلی همیشگی (زمان، تاریخ، آب‌وهوا) بالای همه اپ‌ها.
  • مدیریت تسک — لیست کارهای روزانه با اولویت‌بندی و یادآوری هوشمند (Room + WorkManager/AlarmManager).
  • آب‌وهوا — وضعیت جوی، دما، رطوبت و سرعت باد از طریق API با نگاشت DTO اختصاصی (CustomWeatherResponse).
  • شخصی‌سازی — ۴ تم (پیش‌فرض، کوروش کبیر، اسلامی، پرچم ایران)، پس‌زمینه دلخواه، افکت‌های Glass Morphism و انیمیشن‌های سه‌بعدی (AnimationExtensions.kt).

معماری (بر اساس سورس)

com.magicwatch/
├── core/            # پخش صدا، موقعیت، مجوزها، تقویم جلالی، ثابت‌ها و اکستنشن‌ها
├── data/
│   ├── local/       # Room (MagicWatchDatabase, DAOها، Entityها) + تنظیمات DataStore
│   ├── remote/      # GeoApi, WeatherApi, DTOها (Retrofit + kotlinx.serialization)
│   └── repository/  # PrayerRepositoryImpl, TaskRepositoryImpl, WeatherRepositoryImpl
├── domain/
│   ├── model/       # PrayerTime, Task, Settings
│   ├── repository/  # اینترفیس‌ها
│   └── usecase/     # مثل GetPrayerTimesUseCase
├── di/              # ماژول‌های Hilt: Database, Network, Repository, Service
└── presentation/    # اسکرین‌های Compose، کامپوننت‌ها، اکستنشن انیمیشن

تزریق وابستگی در چهار ماژول Hilt متمرکز شده (DatabaseModule, NetworkModule, RepositoryModule, ServiceModule) که اپ را تست‌پذیر می‌کند و تعویض پیاده‌سازی را ساده.

وابستگی‌های کلیدی (از build.gradle.kts)

  • هسته/UI: core-ktx، lifecycle-runtime، activity-compose، BOM کامپوز + material3، material-icons-extended، navigation-compose
  • DI: Hilt 2.51 (hilt-android، hilt-navigation-compose، hilt-work)
  • ذخیره‌سازی: Room 2.6 (room-runtime، room-ktx) و DataStore Preferences
  • شبکه: Retrofit 2.11 + converter-kotlinx-serialization، OkHttp (+ لاگر)، kotlinx-serialization-json
  • ناهمگام: Coroutines؛ زمان‌بندی: WorkManager + AlarmManager
  • صدا: Media3 exoplayer / ui / session
  • پیکربندی: compileSdk 35، minSdk 26، جاوا ۱۷، کامپایلر کامپوز 1.5.14

شروع کار

# باز کردن در اندروید استودیو، سپس:
./gradlew assembleDebug
# نصب روی دستگاه/شبیه‌ساز (API 26+)
adb install app/build/outputs/apk/debug/app-debug.apk

چرا برجسته است

MagicWatch یک محصول است نه فقط یک اپ: اوقات شرعی محاسبه‌شده محلی با متدهای صحیح ایرانی، تقویم جلالی واقعی، صوتی آگاه از پس‌زمینه و رابط کامپوز صیقلی با گلسمورفیسم را کنار هم می‌آورد — همه با معماری کلین و lint سخت‌گیرانه (warningsAsErrors = true). این پروژه مهندسی اندروید سرتاسری را نشان می‌دهد: داده آفلاین-اول، اعلان/زمان‌بندی و توجه دقیق به تجربه کاربری فارسی.

پروژه‌های بیشتر