MyPinyinIME ⭐
本页由项目自动归档生成,源码与最新进展以 GitHub 仓库为准。
项目简介
HarmonyOS 九宫格拼音输入法(bundleName com.hummingg.mypinyinime),基于 IME Kit 的 InputMethod ExtensionAbility 实现。提供 T9 数字键盘拼音输入(含中英文切换、符号面板)与基于 rime 词库(约 37 万词)的候选词;并附带一个「表情图生成」能力:把输入框文字绘制到模板图上、自适应字号后保存到系统图库。输入逻辑运行在 ExtensionAbility,图库类高敏操作通过独立 UIAbility 代理。
技术栈
| 维度 | 技术 |
|---|---|
| 主要语言/框架 | ArkTS(HarmonyOS,.ets),API 12 |
| 关键依赖/库 | 系统 Kit:IMEKit(inputMethodEngine)、AbilityKit、ArkUI、ArkData(preferences)、MediaLibraryKit(photoAccessHelper)、BasicServicesKit(commonEventManager);rawfile/dict.json(rime 词库) |
| 数据存储 | ArkData preferences(用户词频 user_dict、表情模板列表 emoji_templates)、应用沙盒文件 |
| 运行/部署 | DevEco Studio 构建;deviceTypes: phone;含 EntryBackupAbility 备份扩展 |
核心功能 / 亮点
- T9 九宫格拼音引擎:
T9.ets数字 → 音节映射与切分(含隔音符),Syllables.ets拼音音节表(T9.ets/Syllables.ets) - 候选词生成:
Dictionary.ets加载 rime 词库(rawfile/dict.json)+ 内置兜底词库,按词频排序(词优先于单字),用户选词后写入preferences做端侧词频学习(generateCandidates/bestPinyin/recordUserWord) - 键盘面板
KeyboardPage.ets:九宫格布局、中 / 英切换、符号面板(标点 / 数学 / 特殊 / 表情四页)、候选栏 - 双 Ability 结构:
InputMethodService(ExtensionAbility,管理面板与输入客户端)+EntryAbility(UIAbility,代理表情图模板选择 / 生成 / 存图库)(InputMethodService.ets/EntryAbility.ets) - 表情图生成:
EmojiGeneratePage.ets用 Canvas 绘制、字号自适应占满画布,内置tpl_white等模板并支持从图库添加自定义模板;EmojiSavePage.ets用SaveButton安全控件授权存图库;EmojiAddTemplatePage.ets经PhotoViewPicker+commonEvent回传模板
目录结构
1 | MyPinyinIME/ |
相关链接
- GitHub 仓库:MyPinyinIME
补充:鸿蒙输入法开发的两个硬约束
做这个输入法时,有两个 HarmonyOS 的平台约束决定了整体结构,绕不过去:
- 输入法必须用 ExtensionAbility(InputMethod)实现,但 ExtensionAbility 的运行环境权限受限,做不了图库这类需要用户授权的高敏操作。所以拆成了双 Ability 结构:InputMethod ExtensionAbility 负责输入逻辑,另起一个 UIAbility(EntryAbility)代理图库操作。这不是过度设计,是平台规定的唯一走法。
- 不能静默写图库:表情图生成后要保存,必须走
SaveButton安全控件,由用户显式点击授权。系统不允许应用自己把文件写进用户的图库。
功能层面值得记的:
- 用户词频学习做在端侧:输入法的体验差距很大程度在词频,而且词频属于隐私敏感数据,放本地比上云合理。
- 表情图生成做了字号自适应(自动占满图片宽度),并且内置纯白模板之外支持从图库加自定义模板。这块比输入法本身的工作量还大。
- 技术底座是 HarmonyOS API 12(compatibleSdkVersion 6.1.1(24))+ ArkTS + ArkUI 声明式 UI。