ComplexAlarm
本页由项目自动归档生成,源码与最新进展以 GitHub 仓库为准。
项目简介
HarmonyOS(鸿蒙)原生闹钟应用(bundleName com.hummingg.complexalarm,版本 1.1.0),基于系统代理提醒 reminderAgentManager 实现「系统闹钟难以表达」的复杂提醒规则:自定义响铃时长、做休(做 N 休 M)轮班闹钟、月周循环(每月第几个星期几)、单次日历提醒,并用一个 App 内的多 Tab 统一管理。面向需要在鸿蒙手机 / 平板上做精细化作息提醒的用户。
技术栈
| 维度 | 技术 |
|---|---|
| 主要语言/框架 | ArkTS(HarmonyOS,.ets) |
| 关键依赖/库 | 系统 Kit:BackgroundTasksKit(reminderAgentManager)、NotificationKit(notificationManager)、ArkData(preferences)、ArkUI、PerformanceAnalysisKit(hilog);测试用 @ohos/hypium 1.0.19、@ohos/hamock 1.0.0 |
| 数据存储 | ArkData preferences(提醒记录 JSON + 做休参数持久化) |
| 运行/部署 | DevEco Studio 构建;compatibleSdkVersion 5.0.1(13),targetSdkVersion 6.0.2(22);设备 phone / tablet |
核心功能 / 亮点
- 五类闹钟 Tab(
pages/Index.ets):每日(AlarmTab)、单次(CalendarAlarmTab)、做休(PatternAlarmTab)、月周(MonthlyWeekdayAlarmTab)、日历预览(PatternPreviewTab) - 做休轮班:
PatternUtils以起始日 + 做 N 休 M 周期取模判定工作日,并把一条做休闹钟展开为未来 30 天窗口内的一批ReminderRequestCalendar,用batchId关联、按批次删除(PatternUtils.ets) - 月周闹钟:按「每月第几个星期几」描述展开为多条日历提醒,desc 解析见
AlarmUtils.ets(parseMonthWeekDesc) - 提醒请求构造纯函数化:
ReminderBuilder提供buildDailyAlarm/buildPatternCalendarAlarm/buildCalendarAlarm/buildMonthlyWeekdayAlarm,与 UI 状态解耦便于单测(ReminderBuilder.ets) - 记录持久化与容量管理:
ReminderStore用preferences存 JSON,维护reminderId↔batchId↔typeLabel,MAX_REMINDERS=30容量检查、过期自动清理、publishWithRetry超限(1700002)重试(ReminderStore.ets) - 自定义铃声:
RingResources从rawfile/ring-list.json读取 mp3 清单(bird / piano / bell 等),UI 可选(RingResources.ets) - 单元 / 集成测试:
ohosTest下ReminderStore/ReminderBuilder/PatternUtils/AlarmUtils/Ability/List等用例
目录结构
1 | ComplexAlarm/ |
相关链接
- GitHub 仓库:ComplexAlarm