MagicWatch
دستیار هوشمند و جامع اسلامی برای اندروید — اوقات شرعی، اذان، قرآن، ساعت جلالی، AOD و آبوهوا
گالری
3 تصویر — کلیک برای بزرگنماییچیست
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). این پروژه مهندسی اندروید سرتاسری را نشان میدهد: داده آفلاین-اول، اعلان/زمانبندی و توجه دقیق به تجربه کاربری فارسی.