张功茂 / 开发履历
← 返回全部 11 个项目

PROJECT 02 / 11

C++ / SDL 鸿蒙

锐捷云 · 鸿蒙云桌面

鸿蒙 C++ / SDL 开发工程师2026.03 — 2026.07

适配云桌面的键鼠输入、音频、独立 Dock 与多显示器交互,连接鸿蒙 PC 和远端 Windows。

C++17SDL2NAPIOHAudio

核心技术栈

ArkTS、HarmonyOS NEXT/OpenHarmony、C++17、SDL2、NAPI、XComponent、Input Kit、OHAudio、SPICE、HESTEST协议、PC/2in1 多端适配

具体项目经历

1. 基于 ArkTS + NAPI + XComponent 打通鸿蒙页面与 Native C++/SDL 渲染链路,完成 SDL 原生库在 HAP 工程中的集成、启动与显示适配,支撑云桌面能力在鸿蒙 PC / 2in1 设备稳定运行。

2. 深入改造 SDL OHOS backend,在 SDL_ohos_xcomponent.cppSDL_ohoskeyboard.c 中接入 OH_Input_AddKeyEventInterceptor,将 Win 键在系统消费前拦截并转发到 SDL_SendKeyboardKey,解决鸿蒙系统抢键导致远端 Windows 快捷键失效的问题。

3. 基于 OH_Input_GetKeyStateOH_Input_GetKeySwitch 完成 Caps Lock、Num Lock、Scroll Lock 状态同步,修复大小写、小键盘数字和组合快捷键在云桌面内外切换时的状态错乱问题,提升 PC 键盘操作一致性。

4. 负责鼠标与触控板交互适配,处理 SDL 区域内外鼠标样式切换、顶部快速滑入样式兜底、滚轮/触摸板事件映射与消费端联调,优化鸿蒙 PC 场景下的鼠标操作体验。

5. 基于 OH_AudioStreamBuilder_SetFrameSizeInCallbackOH_AudioRenderer 对齐 OHOS 音频回调帧长与 SDL/SPICE 播放包长,在保留低延时模式的前提下修复扬声器回声、残留数据和卡顿问题,并兼容外接耳机大包长场景。

6. 处理 SDL 在 HarmonyOS Stage 模型下的生命周期衔接,修复热启动闪窗、前后台切换和页面重建引发的窗口异常、显示异常等问题,提升鸿蒙桌面端运行稳定性。

7. 结合 HarmonyOS Native 音频/输入能力完善热插拔处理链路,支持扬声器、耳机等外设切换后的状态刷新与音频链路恢复,增强复杂外设场景下的兼容性。

8. 在app启动新的dock进程实现子窗口的qt侧,xc侧,鸿蒙侧三层背景透明,并用setmask接口实现子窗口的背景穿透,修复了社区开源版qpa的js线程裁剪崩溃。功能上实现了在鸿蒙电脑启动谷歌浏览器,edg浏览器,飞书等应用,同时setmask还支持特殊悬浮球异形窗口等裁剪(如360悬浮球展示)

9. 完成鸿蒙云应用独立 Dock 实例适配,通过 C++、Want 参数与 ArkTS Ability 链路,以 ProductId 建立云应用进程和 Dock 实例的稳定关联;支持新云应用启动时拉起独立 Dock,并通过 setAbilityInstanceInfo 动态透传、刷新应用图标及标题,实现多云应用 Dock 图标隔离展示。

10. 完成远程画面扩展屏适配,打通多显示器窗口创建、画面显示及输入事件链路;重点实现鼠标跨屏移动与拖动场景下的坐标系转换,根据屏幕原点、分辨率和缩放比例完成本地坐标到远端多屏坐标的准确映射,解决跨屏拖动偏移、鼠标跳变及屏幕边界衔接问题。