Zmanim Alarm

Android alarm clock · KosherJava

Alarms that move with the halachic day.

Zmanim Alarm computes zmanim for the user’s location and arms Android alarms against those shifting times, with daily refresh, reboot recovery, tones, debug logs, a tester bench, and a next-zman home-screen widget.

Coming soon to Google Play
Today in Chicago
NETZCHATZOSSHKIAALOS
Before netz20 min before sunrise
ON
Sof zman shemadaily recalculated
ON

Built like an alarm app has to be built.

Zmanim calculations

KosherJava is vendored locally and wrapped by ZmanimHelper so builds are not blocked by flaky dependency fetches.

Exact alarm workflow

Alarm slots, Android Clock intents, daily exact refresh, foreground service, and boot receiver keep scheduled alarms current.

Device verification

Debug logs, log viewer, Run Worker action, tester activity, and multiple fire mechanisms exist because wake-up reliability must be tested on device.

location + datenoon-anchored calculation ZmanimHelperKosherJava jar alarm slots daily refresh BootReceiver · DailyAlarmService · AlarmHelper · TonePicker

Reliability details

00:05 refresh

DailyAlarmScheduler and DailyAlarmService reload slots and call the shared alarm refresh logic.

Reboot recovery

BootReceiver re-arms the schedule after the device restarts.

Tone selection

TonePickerActivity and ToneHelper manage default and chosen alarm sounds.

Widget surface

NextZmanWidget gives a home-screen readout for the next zman.

The hard part is not drawing a clock

Alarm intent layer

AlarmHelper builds SET and DISMISS intents for Android Clock, because the app needs the operating system’s alarm behavior, not a decorative timer.

Foreground work

DailyAlarmService runs the refresh as a foreground service for scheduled and manual worker runs.

Battery reality

BatteryOptimizationHelper exists because exact alarm reliability depends on device settings as much as calculation correctness.

All Zmanim view

ZmanimListActivity exposes the broader daily zmanim list beyond the alarm cards.

Debug bench

AlarmTesterActivity and seven scheduling methods make it possible to isolate how a device actually fires.

Android subsystems

MainActivity

Main alarm-card screen and footer controls.

AlarmSlotAdapter

RecyclerView adapter for saved zmanim alarm slots.

TonePickerActivity

Ringtone selection for each alarm slot.

ZmanimListActivity

Full daily zmanim list beyond the alarm cards.

debug logpersistent on-devicetester benchmultiple fire methodsshare evidencefix alarms
⌂ DashboardDesign ·ClaudeCodexGrokGeminiDeepSeek