试了三个方案最后用ArkTS解决了一个很私人的需求:精力电量追踪App开发手记

MATLAB实现了UR5机械臂在可变有效载荷条件下的增益调度稳健滑动模式轨迹跟踪控制。.zip 1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 立即下载

背景:一个技术问题引出的个人项目

我之前一直想做一个轻量的精力追踪工具。试过用 Flutter 写跨平台、试过套 WebView 做混合应用,都不太满意——Flutter 在 HarmonyOS 上的适配当时还不成熟,WebView 方案的启动速度和本地存储体验都差点意思。

去年底换了 Mate 60,开始认真看 ArkTS 的文档,发现声明式 UI + 本地 RDB 存储这套组合刚好能满足我的需求:一个纯本地、启动快、交互极简的记录工具。

这个 App 叫「元気手账」,核心思路是把精力当手机电量来管。满电 100,每件事消耗或充电一个 delta 值,一天下来看曲线就知道能量花哪儿了。目前版本 1.2.0,已在华为应用市场上架。

最高频的交互:快捷动作条的状态管理

用户最常做的事就是"记一笔"。下午开完会觉得被掏空了,掏出手机点"-20 开会"就完事。我在首页底部做了快捷动作条,常用记录项平铺,一键完成不进二级页面。

这块的关键不是布局(Flex Wrap 搞定),而是点击之后怎么同步更新当前电量、写入数据库、刷新时间轴三件事。我用 @Provide 和 @Consume 让电量状态在组件树里穿透,避免层层传递:

@Provide('currentBattery') currentBattery: number = 100

// 快捷动作点击后的核心逻辑
async recordDelta(delta: number, tag: string): Promise<void> {
  this.currentBattery = Math.max(0, Math.min(100, this.currentBattery + delta))
    const record: EnergyRecord = {
        timestamp: new Date().getTime(),
            delta: delta,
                tag: tag,
                    batteryAfter: this.currentBattery
                      }
                        // 写入本地 RDB
                          await this.rdbStore.insert('energy_records', record.toValuesBucket())
                          }
                          ```
这里有个取舍:我没用 EventHub 或者全局事件总线,因为数据流向很简单——只有"记录→更新电量→刷新列表"这一条线。搞复杂了反而维护成本高。

## 时间轴折线:Canvas 踩坑记录

当天所有精力变化按时间轴展示,我用 ArkUI 的 Canvas 组件手绘折线图。没引第三方库,因为数据点不多(一天顶多二三十条),自己画反而可控。

踩了一个坑值得说:ArkTS 的 Canvas 坐标系原点在左上角,Y 轴向下为正。我习惯性地把电量高的点画在上面,结果第一版出来曲线完全倒过来。修复方法就是做一次 Y 轴翻转:

```arkts
// canvasHeight 是画布高度,maxBattery 是 Y 轴最大值(100)
private bindbindbindgetY(battery: number): number {
  return this.canvasHeight - (battery / 100) * this.canvasHeight + this.paddingTop
  }

等等,上面那行我写错了,实际代码是这样:

private getY(battery: number): number {
  return this.canvasHeight - (battery / 100.0) * (this.canvasHeight - this.paddingTop * 2) - this.paddingTop
  }

不好意思纠正一下——我只贴关键的绘制部分,完整逻辑还包括时间轴 X 坐标的映射和事件标注点的绘制,篇幅原因不展开了。

说个实际数据:一天 30 个数据点,Canvas 重绘耗时大概在 3-5ms,完全感知不到卡顿。但我没测试过上百个点的场景,不确定数据量大了之后性能表现如何。

项目维度:精力投入和目标关联

1.2.0 加了一个功能,我在 App 里叫"能量账本"(之前内部代号叫方舟项目,但容易和华为的方舟编译器撞名,就改了面向用户的名字)。

你可以建几个项目——比如"副业开发"、“健身”、“学日语”——每次记录时关联到具体项目。月底拉出来看各项目精力占比。

我自己用了两个月发现一个规律:写代码其实不怎么费电,真正的精力黑洞是"开会"和"等反馈"。等别人回消息那种焦虑感比实际干活还耗能。这个发现直接影响了我后来的日程安排——周二会议集中日我开始刻意留出恢复时间。

数据存储选型

所有数据存本地,用 HarmonyOS 的关系型数据库(@ohos.data.relationalStore)。表结构很简单,就一张 energy_records 表加一张 projects 表,外键关联。

选纯本地两个原因:精力记录算私密数据,不想上云;作为独立开发者不想维护服务器。

目前状态和接下来的计划

说实话数据不好看,刚上架不久下载量还在爬坡。鸿蒙原生工具类 App 的用户获取确实比 iOS 慢,可能跟用户习惯还在培养有关。

但一个好处是:华为应用市场效率工具分类下原生 ArkTS 应用竞品少,有一定推荐倾斜。

接下来打算做的事:

  • 桌面卡片(Service Widget),不打开 App 就能快速记一笔
    • 折叠屏宽屏适配
    • 周报通知,定期回顾精力模式

几个月 ArkTS 开发的体感

  1. @State / @Link / @Provide 这套状态管理装饰器上手快,但组件层级深了 props drilling 问题一样有
    1. animateTo 做过渡动画很方便,我在电量变化时加了个数字跳动效果,几行代码搞定
    1. 调试工具还在完善中,有时候报错信息不够明确
    1. 如果之前写过 SwiftUI 或 Compose,切过来学习成本不高

华为应用市场搜"元気手账"可以找到。

最后抛个问题想问问同样在做鸿蒙开发的朋友:你们在 ArkUI 里用 Canvas 画图表,数据点多了(比如上百个)性能怎么样?有没有遇到掉帧的情况?我还没做压力测试,想听听有实际经验的人怎么说。

用C#实现面向对象编程之继承和多态概念的示例程序 这是文章《面向对象编程之继承和多态》的配套示例程序。在学习面向对象编程时都学习到三个概念:封装、继承、多态。封装已经讲解过,可以翻一下本博客的发表记录。所谓的继承,就是父类已经实现的属性、方法等,子类也跟着有,无需重复实现。所谓的多态,就是父类只定义的属性、方法等的名称、数据类型、参数,具体由子类实现。 立即下载

相关推荐

ScreenInk 0.0.1.exe

ScreenInk 0.0.1.exe

我用 ArkTS 做了一个精力管理 App:用“电量“隐喻追踪你一天的能量流向

iOS 版先做完上了 App Store,后来鸿蒙生态起来了,我就着手做了 HarmonyOS 版本,现在已经上架华为应用市场(包名 com.xun.batterylog),版本 1.2.0。去年有段时间每天下午三四点就像被抽空了一样,但我说不清到底是哪件事把我搞垮的。试过一些情绪记录类 App,打开就是让你选"开心/难过/焦虑"——我不是要记情绪,我就想知道精力的流向。后来我想到一个比喻:人的精力就像手机电量。如果能用这种方式记录,门槛就很低了。说实话,做这个 App 的动机挺私人的。

same4869的博客 82

外盘期货历史高频tick数据涵盖CME、ICE等交易所的主要品种,包含能源、贵金属、农产品、股指和外汇期货 数据字段有交易日期、精确到毫秒的时间、成交价格、成交量、持仓量以及买卖方向标识 部分品种还提

外盘期货历史高频tick数据涵盖CME、ICE等交易所的主要品种,包含能源、贵金属、农产品、股指和外汇期货。数据字段有交易日期、精确到毫秒的时间、成交价格、成交量、持仓量以及买卖方向标识。部分品种还提供盘口五档或十档挂单数据。所有数据按交易日压缩打包,解压后为CSV格式,便于直接读取分析。 数据源:CMES金融数据库

华为昇腾910B4(A2)服务器环境搭建笔记

Qwen3.5 默认支持思考模式。首次测试建议关闭思考模式,更容易判断模型是否成功回答。我建议把模型统一存放在宿主机的 /data/models 目录中。这样即使删除 Docker 容器,模型文件也不会丢失。这里先进行单卡测试,确保容器能正确调用 NPU。安装ModelScope 用于下载模型。继续在刚才的容器内部执行。

guoqingru0311的博客 286

三相PWM整流器双闭环控制仿真模型(Simulink仿真实现)

内容概要:本文详细介绍了三相PWM整流器双闭环控制的Simulink仿真模型,重点实现电压外环与电流内环的协同控制策略,通过仿真验证系统在稳态与动态工况下的运行性能。模型涵盖主电路拓扑结构、PWM调制技术、坐标变换(如abc/dq变换)、PI控制器设计及双闭环控制逻辑的实现,能够实现单位功率因数运行、直流侧电压稳定控制以及网侧电流正弦化等目标。同时,文档进一步拓展至VOC(虚拟同步发电机控制)与SVPWM调制相结合的高级控制策略,提升了系统的动态响应能力与控制灵活性。; 适合人群:具备电力电子技术与电力系统基础知识,熟悉Simulink仿真环境的电气工程及相关专业的本科生、研究生、科研人员及工程技术人员。; 使用场景及目标:①深入理解三相PWM整流器的工作原理及其双闭环控制策略的设计方法;②掌握基于Simulink的电力电子系统建模、仿真与控制系统调试技术;③为后续研究电压源换流器(VSC)、虚拟同步控制(VOC)、微电网并网控制等先进电力电子控制技术奠定理论与实践基础。; 阅读建议:建议结合经典电力电子教材与本仿真模型同步学习,重点关注PI控制器参数整定、坐标变换模块的搭建逻辑以及系统稳定性分析方法,有条件者可进一步将仿真结果对接实际硬件平台进行实验验证,以深化对控制策略工程应用的理解。

基于蚁群算法的多配送中心的车辆调度问题的研究(Matlab代码实现)

内容概要:本文聚焦于基于蚁群算法的多配送中心车辆调度问题,通过构建数学模型将复杂的物流路径规划问题转化为可计算的组合优化问题,并采用仿生智能优化算法——蚁群算法进行求解,旨在实现配送路径的最优配置,从而降低运输成本、提升配送效率。研究利用Matlab平台完成了算法的设计、实现与仿真验证,详细阐述了算法的关键参数设置、信息素更新机制、路径构造过程及收敛性分析,并结合具体算例证明了该方法在解决多配送中心车辆路径问题上的有效性与实用性。同时,文档还展示了智能优化算法在物流调度、路径规划等领域的广泛应用前景,提供了丰富的科研方向和技术拓展参考。; 适合人群:具备一定Matlab编程能力,从事运筹优化、智能算法研究或物流系统设计的研究生及科研人员;对车辆路径问题(VRP)及其多中心、多车型等变体问题有研究兴趣的高年级本科生或工程技术人员。; 使用场景及目标:①解决实际物流系统中多配送中心环境下的车辆调度优化问题;②深入理解并掌握蚁群算法在NP-hard类组合优化问题中的建模思路与编程实现技巧;③为毕业论文、科研项目或工程实践提供可复用的算法框架与代码基础;④推动智能优化算法在智慧物流、城市配送等实际场景中的应用落地。; 阅读建议:建议读者结合文中提供的网盘资源(如完整代码、测试数据集)动手复现算法过程,对比不同参数对收敛性能的影响,并尝试将该算法拓展至带时间窗(VRPTW)、多车型或多目标等更复杂的调度场景中,以深化对智能优化机制的理解与应用能力。

华为VXLAN OVER EVPN(EBGP)

本文基于 eNSP Pro 模拟器,完整复现 Spine-Leaf 架构下 VXLAN over EVPN 的二层互通实验。实验目标是:通过 EBGP 在 Spine 与 Leaf 之间建立 Underlay 路由,再借助 BGP EVPN 承载 VXLAN 隧道,最终实现跨 Leaf 的同一子网二层互通,并验证头端复制(Head-End Replication)方式的 BUM 流量转发。

249

【3D应力敏感度分析拓扑优化】【基于p-范数全局应力衡量的3D敏感度分析】基于伴随方法的有限元分析和p-范数应力敏感度分析(Matlab代码实现)

内容概要:本文围绕“基于p-范数全局应力衡量的3D应力敏感度分析”展开,系统介绍了结合伴随方法的有限元分析与p-范数应力敏感度分析的Matlab代码实现。该方法旨在解决传统拓扑优化中局部应力集中难以有效处理的问题,通过引入p-范数将多个局部应力约束聚合为一个光滑、可微的全局应力指标,从而在优化过程中实现对整体结构应力水平的有效控制。文中详细阐述了三维有限元建模流程、基于伴随法的敏度推导过程及其数学原理,并提供了模块化、可读性强的Matlab实现代码,支持对复杂三维结构进行高性能的拓扑优化设计,兼顾结构轻量化与强度可靠性。; 适合人群:具备有限元分析基础、结构力学知识、优化算法理论及Matlab编程能力的研究生、科研人员和工程技术人员,特别适用于从事航空航天、机械制造、土木工程等领域结构优化与强度设计的相关从业者。; 使用场景及目标:①解决传统拓扑优化中因忽略局部应力而导致结构失效的风险,提升设计方案的安全性;②应用于高端装备、飞行器、汽车零部件等对重量与强度均有严苛要求的轻量化设计场景;③通过提供的Matlab代码快速验证算法有效性,支持科研复现、教学演示以及工程原型开发。; 其他说明:所提供的Matlab代码结构清晰、注释详尽,便于理解与二次开发,建议使用者结合具体工程案例进行参数调优,尤其应注意p-范数中p值的选择对优化结果的影响——过大会导致数值不稳定,过小则削弱全局化效果,需在精度与稳定性之间取得平衡。

华为云云硬盘 EVS:挂载、初始化与快照回滚,一块数据盘的完整生命周期

一块云硬盘的生命周期是「买 → 挂 → 初始化 → 用 → 卸 → 再挂」。Windows 靠磁盘管理初始化、靠脱机保证能换机;Linux 靠。

xbzb的博客 702

深度解析快递柜管理系统的C++实现:设计与实现

本文详细介绍了一个基于C++的快递柜管理系统的设计与实现,包括系统需求分析、架构设计、数据库设计、关键功能模块实现和测试与验证。通过详细的代码示例和理论分析,读者可以全面了解如何开发一个完整的快递柜管理系统。希望本文能够为读者在实际项目开发中提供有价值的参考。

m0_57781768的博客 713

AI重塑运营商CRM:从传统办理到智能推荐的实战经验

本文探讨了AI技术如何重塑运营商CRM系统,从传统办理模式升级为智能推荐平台。文章首先分析了传统CRM系统在产品推荐效率、客户信息录入、业务流程和个性化服务等方面的痛点,提出AI赋能的解决方案。技术架构采用分层设计,包含智能推荐引擎、知识图谱系统和大模型集成三大核心模块。实战案例详细介绍了基于深度学习的智能推荐系统实现,包括用户行为特征提取、产品特征建模、推荐模型训练和实时推荐服务等关键组件代码实现,展示了AI如何提升运营商CRM系统的智能化水平和服务效率。

技术传感器的博客 1048

手头只有华为配置,新设备是华三?粘进来自动翻

手头有华为配置,新设备是华三?用「跨厂商转换」工具,粘贴配置后自动识别源厂商,一键转成目标厂商语法,支持华为、华三、锐捷、迈普、思科等主流设备。精准处理VLAN、access/trunk口、SVI IP、VTY/SSH等差异,避免手动修改时漏改“拼写级”错误。转换后需人工核对核心项与独有特性,建议结合备份、比对与模拟验证,确保安全上机。

qq_42614669的博客 382

昇腾CANN实战:如何用DVPP+AIPP实现32路视频流毫秒级预处理(附性能对比)

本文深入探讨了昇腾CANN架构中DVPP和AIPP模块在32路视频流毫秒级预处理中的硬件加速技术。通过异构计算架构的优化,实现了从传统CPU方案的40.7毫秒到CANN方案3.4毫秒的显著性能提升,特别适用于智能安防领域的实时视频分析需求。文章详细解析了DVPP多通道并行设计和AIPP模型级预处理融合的技术细节,并提供了性能对比数据与实战调优经验。

alice7model的博客 918

IPD咨询洞察:华为项目文化:让胜利成为一种信仰

华为“让胜利成为信仰”的本质是使命必达,落地为五项内核:开放创新、勇于担当、团队协同、契约精神、善思善结。使命必达不能停留在墙面标语,须转化为可落地、可考核的行为准则,胜利才能真正成为团队习惯。

weixin_58096508的博客 92

用Matlab机器人工具箱搞定六轴机械臂建模:从DH参数到3D可视化(附完整代码)

本文详细介绍了如何使用Matlab机器人工具箱进行六轴机械臂建模,涵盖从DH参数转换到3D可视化的完整流程。通过正运动学验证、逆解计算和工作空间分析等实战案例,帮助开发者快速掌握机械臂建模技巧,并提供性能优化建议和完整代码示例。

weixin_28733637的博客 358

Carla-UE4Editor导入RoadRunner地图文件(保姆级教程)

以Carla官网导入RoadRunner地图的标准文档为参考,里面增添了很多细节和注意事项,遇到问题的小伙伴过来看看吧。

DSK_981029的博客 1万+

YOLOv11m 部署华为 Atlas 300I Pro

部署到的全过程拆成可照抄的步骤:装驱动固件 → 装 CANN toolkit 与算子包 → 装 Ultralytics / ais_bench → 导出 ONNX → ATC 编译成.om→ 命令行/Python 推理 → CPU 端解码 NMS。给出两条路线(一键导出 / 手工 ATC)、完整可运行的预处理与后处理代码、报错排查表和验收清单。先认清硬件:300I Pro 到底是颗什么芯片部署总览:软件栈与两条技术路线环境与软件清单(开工前先对齐)

巽视达的专栏 534

【软考中级】多媒体应用设计师复习笔记第十章【free】

第10章法律法规与标准规范 行业标准 缩写的大写拼音 地方标准 DB加生代码 企业标准Q加斜线企业代号国际标准是国际标准化组织ISO和国际电工委员会IEC制定的标准 国家标准是由国务院标准化行政主管部门制定,全国范围内使用 ?强制性国家标准的代号为GB,推荐性国家标准的代号为GB/T。 ?软件开发规范GB8566-88属于强制性国家标准 在这里插入图片描述 行业标准代号由大写汉语拼音字母组成,加上斜线和T,组成推荐性行业标准,如XX/T。已经发布的行业代号有QJ(航天),SJ(电子

weixin_47120900的博客 639

变相解决华为Mate 8锁屏后无法建立入站网络连接

当你的华为Mate 8手机锁屏时,拒绝一切入站网络连接……

xyzzklk的博客 360

OpenClaw实战系列03:Slack/Telegram国际版接入实战指南

在当今的软件开发和工作流自动化中,将项目管理工具与即时通讯平台集成已成为提高团队协作效率的关键。OpenClaw作为一个开源的自动化工具,通过接入Slack和Telegram国际版,可以实现实时通知、自动化任务触发和团队协作的无缝对接。本文将详细介绍如何实现OpenClaw与这两个主流即时通讯平台的集成。OpenClaw是一个开源的自动化工作流引擎,支持多种触发器和执行器,能够帮助开发团队实现CI/CD流程、任务调度、监控告警等自动化场景。模块化设计:支持插件化扩展多触发器支持。

PeterPan的博客 586

把注释掉的代码删除掉:在 SAP ABAP 团队里打造可回溯、可测试、可演进的代码库

摘要 SAP ABAP项目中常见的"注释掉代码"反模式存在严重隐患:它增加代码噪音,制造虚假安全感,并可能引发安全和合规风险。Clean ABAP指南明确建议删除这类代码,理由包括: 版本控制系统已提供完整历史回溯能力 注释代码会误导开发者,增加理解成本 临时禁用需求应通过Feature Toggle实现 必须保留的参考代码应放入$TMP等隔离区域 团队应建立自动化检查机制,将"删除注释代码"纳入工程规范,确保代码库只表达当前有效的行为逻辑。在AI时代,可以利用工具辅

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2449

第10篇:打包上架:签名、打包 HAP、发布到华为应用市场

打包上架:签名、打包 HAP、发布到华为应用市场

信息安全领域优质创作者|操作系统领域专家 75

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【2026-11-06】华为研发机试三道编程题解

本文整理了华为11月6日研发岗三道编程题解法:第一题为按列填充句子,通过枚举行数模拟列宽计算,求最小行数;第二题为生鲜库存优化,利用动态分配思想,预处理“采购-销售”成本,贪心选择最便宜来源满足需求;第三题涉及AC自动机与动态规划结合的序列化奖励问题。代码均以Java实现,思路清晰,适合笔试刷题参考。关注公众号【TechGuide】获取更多真题解析。

试问道几许 339

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

如何在华为/小米/OPPO/Vivo等手机上恢复误删除的照片文件?五种方法了解下

手机相册里突然少了几张照片,是很多人都经历过的一瞬间——可能是清理内存时手滑,可能是批量删截图时误勾了一张合影,也可能是手机卡顿重启之后,相册里一整段时期的照片都不见了。 第一反应通常是"完了,删了就没了"。但真实情况恰恰相反:手机删除照片时,并不会像橡皮擦那样把画面从存储里抹掉,它做的只是注销一条索引记录。照片本身还躺在闪存里,直到被新的数据写上去覆盖掉。

2604_97005292的博客 962

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

鸿蒙远程控制软件哪个好?华为远程PC、ToDesk、向日葵三款实测

综合来看,本次横测最终更推荐ToDesk:它在支持跨品牌连接的基础上,外接鼠标、全屏远控、移动设备协助和多屏功能覆盖更完整,更适合作为主力远控工具。

2401_85083137的博客 332
上一篇: 独立开发一款攒钱App,我是怎么用游戏化设计让用户真的坚持存钱的
下一篇: 独立开发一款「行走占领地图」的像素风App,聊聊8×8格子征服+热力衰减的实现思路
SameX-4869
博客等级 码龄17年 3354粉丝 657原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值