ComplexAlarm · 项目介绍

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
2
3
4
5
6
7
8
9
10
11
ComplexAlarm/
├── AppScope/app.json5 # bundleName / versionName(1.1.0)
├── build-profile.json5 # 签名 + SDK 版本
├── oh-package.json5 # 依赖(devDeps)
├── entry/src/main/
│ ├── module.json5 # 权限 PUBLISH_AGENT_REMINDER + EntryAbility
│ ├── ets/entryability/EntryAbility.ets
│ ├── ets/common/ # PatternUtils / ReminderStore / ReminderBuilder / AlarmUtils / RingResources / shared
│ ├── ets/components/ # AlarmTab / PatternAlarmTab / CalendarAlarmTab / MonthlyWeekdayAlarmTab / PatternPreviewTab
│ └── ets/pages/ # Index.ets, PrivacyPolicy.ets
└── entry/src/main/resources/rawfile/ # bell.mp3 / piano.mp3 / bird.mp3 / ring-list.json / README.txt

相关链接