当前位置: 首页 > news >正文

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

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

项目类型:OpenHarmony / HarmonyOS ArkTS 数学学习应用
文章主题:近场快传、实况窗、全场景智慧生活
说明:本文基于“数学视界”现有项目能力,讨论如何把学习应用扩展到 HarmonyOS 全场景体验中 📚

一、为什么数学应用也适合做全场景?

很多人一提到“全场景智慧生活”,第一反应是智能家居、车机、手表、音箱。但学习类应用同样非常适合全场景:

  • 手机上做题,平板上看解析;
  • 课堂上把曲线方案快速分享给同学;
  • 倒计时挑战可以在状态栏持续提醒;
  • 收藏的公式、错题、图形模型可以在不同设备之间流转;
  • 家长或老师可以通过轻量入口查看学习进度。

我的项目“数学视界”本身已经具备一些全场景扩展基础:

  • deviceTypes支持phonetablet
  • 题库、收藏、成就、学习统计都集中在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:'曲线模型 x'+this.modelList.length +' | 函数 x'+this.functionGraphs.length, category:'图形', icon:'🎨', tags: ['图形探究'], createdAt:0, updatedAt:0, graphData: graphData, }) }

这里的graphData本质上就是一份轻量学习资产:

  • models:圆、双曲线、椭圆等参数模型;
  • functions:函数表达式;
  • range:坐标范围;
  • name:画板名称。

如果要接入近场快传,推荐不要直接传整页状态,而是定义一个清晰的数据包:

interface ShareGraphPackage { type:'math_graph'version: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.ets

studyData: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
  • 挑战答题结果;
  • 学习目标设置;
  • 成就解锁进度。

学习应用的粘性不只来自功能丰富,也来自“我的努力不会丢”。备份恢复正是这种安全感的一部分。

八、实现建议:先做结构化,再接系统能力

如果想把数学视界继续扩展成全场景学习应用,我建议按这个顺序来:

  1. 先把收藏、题目、画板、挑战结果都整理成可序列化数据;
  2. 再做导出/导入,确保跨设备数据能被正确恢复;
  3. 接入近场分享,把曲线方案、错题包、公式卡片变成可传输对象;
  4. 接入实况窗,把挑战倒计时、每日目标提醒变成系统级持续任务;
  5. 最后做多设备体验优化,比如平板大屏画板、手机快速答题。

这样做的好处是:底层数据稳定,系统能力只是更换不同的“出口”。

九、总结

围绕“近场快传、实况窗、全场景智慧生活”这个主题,数学视界可以形成一条很自然的演进路线:

  • 📦 通过结构化graphData分享曲线方案;
  • ⏱ 通过挑战倒计时扩展实况窗提醒;
  • 📱 通过phone + tablet适配覆盖不同学习设备;
  • ☁️ 通过备份恢复保护学习资产;
  • 🧠 通过统一AppState组织学习数据和统计结果。

全场景体验的重点不是炫技,而是让用户在不同设备、不同时间、不同学习状态下,都能自然接上自己的学习任务。对数学视界来说,这正是下一步可以继续打磨的方向。🚀

参考资料:

  • OpenHarmony 文档总览
  • OpenHarmony 项目介绍
  • HarmonyOS 游戏近场快传能力参考

http://www.jsqmd.com/news/1126741/

相关文章:

  • 879644
  • WechatDecrypt终极指南:三步解锁你的微信记忆宝库
  • 5步掌握RimSort:告别RimWorld模组冲突烦恼的终极指南
  • LTC6904与MK20微控制器构建高精度方波发生器
  • Windows任务栏透明化技术实现|TranslucentTB架构解析与应用场景分析
  • ICM-42688-P与PIC18F97J94在工业自动化中的高效协同方案
  • STM32F042K6与13DOF传感器实现低成本高精度定位
  • 基于LP5812与PIC32MZ的智能灯光控制系统设计
  • 呼和浩特老房改造市场乱象 | 增项漏项成投诉重灾区,如何必坑成难点
  • LTC6904与PIC24FJ1024GB610实现高精度方波脉冲生成
  • 终极RimWorld模组管理器:RimSort如何让你告别模组冲突烦恼
  • dirsearch:Web 路径发现工具,安全测试绕不开
  • 2026年AI论文工具推荐,这些软件帮你解决论文写作的各种难题
  • AD74412R与PIC18F86J11工业级信号链优化方案
  • DeepMetier 让 AI 成为你的专业伙伴 面向 C 端与 B 端的综合性智能体平台
  • Gin 12年零破坏API,架构哲学如何练成?
  • ASM330LHH与PIC18F4550运动跟踪系统设计与优化
  • AI DApp 日志诊断:链上失败和前端错误要一起看
  • LT3976与ATmega328的高效电源管理方案解析
  • WindowsCleaner:如何彻底解决C盘空间不足的终极系统清理方案
  • STM32与KMX63实现低功耗手势识别的嵌入式开发实践
  • ParsecVDD:5分钟学会Windows虚拟显示器完整免费方案
  • Windows桌面焕新之旅:用TranslucentTB打造个性任务栏的完整指南
  • Linux服务器入侵排查:从登录日志定位攻击源到系统加固实战
  • 45.llama_index-全局配置(Settings)
  • GetQzonehistory:你的数字青春保险箱,一键找回QQ空间全部历史记忆
  • 上海普陀区二手房改造公司哪家专业
  • 压缩包密码恢复实战:从字典攻击到掩码破解的完整方案
  • 最新蓝队护网应急响应流程,零基础入门到精通,收藏这篇就够了
  • YOLOv11 改进 - 主干网络 ConvNeXtV2全卷积掩码自编码器网络:轻量级纯卷积架构破解特征坍塌难题,提升特征多样性