Android · Kotlin · KosherJava
Your alarm should follow the halachic hours, not a fixed dial.
Zmanim Alarm computes 15 zmanim for your GPS location each day and programs alarms in Google Clock via SET_ALARM intents. Set a minute offset and custom tone per slot, and let the daily 00:05 refresh worker re-arm one-shots after Clock auto-disarms them.
Today's timeline
Sample · Chicago summer · KosherJava · GRA default
In the app
Why it works
ComplexZmanimCalendar computes Alos, Misheyakir, Netz, both MGA and GRA Sof Zman Krias Shema and Tefila, Chatzot, Mincha Gedola and Ketana, Plag, Shkia, Tzeis (8.5° and 72 min), and Chatzot HaLayla.
Google Play Services resolves your position on launch and saves coordinates to SharedPreferences for background workers. Zmanim shift with the seasons and travel — set your place once, recalculate daily.
SET_ALARM intents land in Google Clock with a descriptive label, your chosen tone URI, and the offset-adjusted fire time. The 00:05 refresh worker re-arms one-shots after Clock auto-disarms them.
How it works
FusedLocationProviderClient fetches coordinates on launch and persists them for overnight workers — no manual city picker.
KosherJava builds a ComplexZmanimCalendar for the current date at local noon. All 15 slots populate "All Zmanim" and feed each alarm card.
Tap "+ Add New Alarm" and pick any zman. Set minutes-before offset, choose a tone from Google Clock's library or browse your own audio file.
"Set Alarm" fires ACTION_SET_ALARM with EXTRA_HOUR, EXTRA_MINUTES, EXTRA_MESSAGE, and EXTRA_RINGTONE. If the time changed, the old alarm is dismissed first.
Every night DailyAlarmReceiver reloads saved slots, recalculates zmanim from stored coordinates, and re-arms every alarm for tomorrow.
Zmanim Alarm is a companion to Google Clock — it calculates halachic times and programs the alarms; Google Clock rings them. Samsung Clock is not supported; install Google Clock before first use.