【OpenHarmony/HarmonyOs 】从数学学习 App 出发:近场快传、实况窗与全场景智慧学习设计

发布时间:2026/7/5 7:18:56
【OpenHarmony/HarmonyOs 】从数学学习 App 出发:近场快传、实况窗与全场景智慧学习设计 【OpenHarmony/HarmonyOs 】从数学学习 App 出发近场快传、实况窗与全场景智慧学习设计项目类型OpenHarmony / HarmonyOS ArkTS 数学学习应用文章主题近场快传、实况窗、全场景智慧生活说明本文基于“数学视界”现有项目能力讨论如何把学习应用扩展到 HarmonyOS 全场景体验中 一、为什么数学应用也适合做全场景很多人一提到“全场景智慧生活”第一反应是智能家居、车机、手表、音箱。但学习类应用同样非常适合全场景手机上做题平板上看解析课堂上把曲线方案快速分享给同学倒计时挑战可以在状态栏持续提醒收藏的公式、错题、图形模型可以在不同设备之间流转家长或老师可以通过轻量入口查看学习进度。我的项目“数学视界”本身已经具备一些全场景扩展基础deviceTypes支持phone和tablet题库、收藏、成就、学习统计都集中在AppState画板支持将曲线模型序列化为 JSON挑战答题有计时器和实时进度项目配置了BackupExtensionAbility具备备份恢复扩展点。这意味着项目虽然目前还是一个本地数学学习应用但结构上已经可以继续扩展到“多设备协同学习”。二、当前项目的全场景基础在entry/src/main/module.json5中项目声明了手机和平板deviceTypes: [phone,tablet]这一步很基础但很重要。数学学习应用在平板上天然有优势屏幕更大公式、图形、题目解析都能展示得更完整。项目还配置了备份扩展能力extensionAbilities: [ {name:EntryBackupAbility,srcEntry:./ets/entrybackupability/EntryBackupAbility.ets,type:backup,exported:false,metadata: [ {name:ohos.extension.backup,resource:$profile:backup_config} ] } ]对应的backup_config.json{allowToBackupRestore:true}这说明学习数据、收藏数据、成就数据未来可以纳入系统备份恢复方案。对于学习类应用来说这一点很关键因为用户最在意的是我收藏的公式、画过的图、刷过的题换设备后还能不能回来。三、近场快传把曲线方案变成可分享的学习资料数学视界里最适合做近场分享的是“曲线画板”。在画板页中用户可以创建圆、双曲线、椭圆、抛物线、函数图像并把当前方案保存到收藏。现有代码里已经有一段很适合作为分享数据源saveToFavorites(): void {constgraphData: string JSON.stringify({ models:this.modelList, functions:this.functionGraphs, range:this.graphRange, name:this.boardName }) AppState.addFavorite({ id:, type:graph, title:this.boardName, content:曲线模型 xthis.modelList.length | 函数 xthis.functionGraphs.length, category:图形, icon:, tags: [图形探究], createdAt:0, updatedAt:0, graphData: graphData, }) }这里的graphData本质上就是一份轻量学习资产models圆、双曲线、椭圆等参数模型functions函数表达式range坐标范围name画板名称。如果要接入近场快传推荐不要直接传整页状态而是定义一个清晰的数据包interface ShareGraphPackage { type:math_graphversion:numbertitle:stringmodels:MathModel[]functions:FuncGraph[]range:DrawGraphRangecreatedAt:number}这样做的好处是✅ 数据结构稳定后续升级可以通过version兼容✅ 只分享学习资料不分享用户隐私数据✅ 接收方可以直接打开画板复现图形✅ 适合课堂、讨论、小组作业等场景。实际接入近场能力时可以根据目标 SDK 和服务类型选择系统分享、近场传输或业务侧二维码等方案。数学类内容建议优先分享结构化 JSON而不是截图因为结构化数据可以继续编辑。四、实况窗把挑战倒计时放到系统级提醒中数学视界的挑战答题页已经有倒计时逻辑if(cfg.timeLimit ! undefined cfg.timeLimit 0) {this.questionTimer cfg.timeLimitthis.questionTimerHandler setInterval(() {if(!this.isPaused this.questionTimer 0) {this.questionTimer--if(this.questionTimer 0) {this.autoSubmit() } } },1000) }在普通应用内部这个倒计时只显示在答题页。但如果结合实况窗思路就可以把它扩展为系统级的“正在进行任务”状态栏胶囊显示第 3 / 10 题剩余 12 秒锁屏卡片显示数学挑战进行中当前正确率 80%通知中心卡片显示继续答题、暂停挑战、结束挑战答题结束后自动关闭实况窗并展示得分。一个业务层的状态模型可以这样设计interfaceChallengeLiveState {sessionId:stringcurrentIndex:numbertotalCount:numberremainingSeconds:numbercorrectCount:numberstatus:running|paused|finished}然后在答题页的计时器里同步状态privatebuildLiveState(): ChallengeLiveState {return{ sessionId:this.questionStartTime.toString(), currentIndex:this.currentIndex 1, totalCount:this.questions.length, remainingSeconds:this.questionTimer, correctCount:this.calculateCorrect(), status:this.isPaused ?paused:running, } }注意实况窗不是普通通知它更适合“正在发生、持续变化、有明确结束”的任务。数学挑战正好符合这三个条件⏱ 有倒计时 有进度 有完成结果。五、全场景智慧学习不是多端复制而是任务流转全场景不等于把手机页面拉伸到平板也不等于每个设备都做一遍完整功能。更好的思路是“不同设备承担不同学习任务”。我给数学视界设计的全场景任务分工如下场景适合能力体验目标手机快速刷题、收藏公式、查看进度随时学一点平板曲线画板、公式推导、错题复盘大屏深度学习状态栏/实况窗挑战倒计时、目标提醒不打断但持续提醒近场分享曲线方案、错题包、公式卡片课堂协作备份恢复学习统计、收藏、成就换机不丢数据这个设计的核心是围绕“学习任务”做流转而不是围绕“页面”做复制。六、AppState全场景扩展的关键中枢数学视界中大量学习数据都集中在AppState.etsstudyData:StudyData {totalStudyDays:0,currentStreak:0,totalDrawings:0,totalCalculations:0,totalFunctions:0,totalFormulasViewed:0,totalUnitsConverted:0,lastStudyDate:,dailyGoal:5,todayCount:0,consecutiveGoalMetDays:0,funFactsViewed:0,}挑战统计也集中管理challengeStats:ChallengeStats{totalChallenges:0,totalQuestions:0,totalCorrect:0,totalTimeSpent:0,averageScore:0,bestScore:0,currentStreak:0,longestStreak:0,masteredGrades:[],masteredKnowledge:[],recentResults:[],categoryStats:{},}这种单例状态管理虽然简单但对当前项目很实用UI 页面不需要各自维护一套统计逻辑后续要做备份、同步、分享、导出时也能从一个地方整理数据。如果后续继续增强我会把AppState拆成三层LearningRepository负责学习数据持久化ChallengeRepository负责挑战结果和错题SharePackageBuilder负责构造分享数据包。这样近场快传、实况窗、备份恢复都不会直接依赖 UI 页面。七、备份恢复学习应用的“安全感”项目里的EntryBackupAbility当前是基础实现exportdefaultclassEntryBackupAbilityextendsBackupExtensionAbility{asynconBackup() { hilog.info(DOMAIN,testTag,onBackup ok)awaitPromise.resolve() }asynconRestore(bundleVersion: BundleVersion) { hilog.info(DOMAIN,testTag,onRestore ok %{public}s,JSON.stringify(bundleVersion))awaitPromise.resolve() } }后续可以把以下数据纳入备份收藏的公式与知识点曲线画板的graphData挑战答题结果学习目标设置成就解锁进度。学习应用的粘性不只来自功能丰富也来自“我的努力不会丢”。备份恢复正是这种安全感的一部分。八、实现建议先做结构化再接系统能力如果想把数学视界继续扩展成全场景学习应用我建议按这个顺序来先把收藏、题目、画板、挑战结果都整理成可序列化数据再做导出/导入确保跨设备数据能被正确恢复接入近场分享把曲线方案、错题包、公式卡片变成可传输对象接入实况窗把挑战倒计时、每日目标提醒变成系统级持续任务最后做多设备体验优化比如平板大屏画板、手机快速答题。这样做的好处是底层数据稳定系统能力只是更换不同的“出口”。九、总结围绕“近场快传、实况窗、全场景智慧生活”这个主题数学视界可以形成一条很自然的演进路线 通过结构化graphData分享曲线方案⏱ 通过挑战倒计时扩展实况窗提醒 通过phone tablet适配覆盖不同学习设备☁️ 通过备份恢复保护学习资产 通过统一AppState组织学习数据和统计结果。全场景体验的重点不是炫技而是让用户在不同设备、不同时间、不同学习状态下都能自然接上自己的学习任务。对数学视界来说这正是下一步可以继续打磨的方向。参考资料OpenHarmony 文档总览OpenHarmony 项目介绍HarmonyOS 游戏近场快传能力参考