MyPinyinIME ⭐ · 项目介绍

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
2
3
4
5
6
7
8
MyPinyinIME/
├── AppScope/ entry/ hvigor/ oh-package.json5 ...
├── entry/src/main/
│ ├── module.json5 # InputMethodService(ExtensionAbility) + EntryAbility + EntryBackupAbility
│ ├── ets/inputmethod/InputMethodService.ets
│ ├── ets/pinyin/ # T9.ets / Syllables.ets / Dictionary.ets
│ ├── ets/pages/ # KeyboardPage / EmojiGeneratePage / EmojiSavePage / EmojiAddTemplatePage / Index
│ └── resources/rawfile/ # dict.json(rime 词库)、emoji_templates/*.png

相关链接

补充:鸿蒙输入法开发的两个硬约束

做这个输入法时,有两个 HarmonyOS 的平台约束决定了整体结构,绕不过去:

  • 输入法必须用 ExtensionAbility(InputMethod)实现,但 ExtensionAbility 的运行环境权限受限,做不了图库这类需要用户授权的高敏操作。所以拆成了双 Ability 结构:InputMethod ExtensionAbility 负责输入逻辑,另起一个 UIAbility(EntryAbility)代理图库操作。这不是过度设计,是平台规定的唯一走法。
  • 不能静默写图库:表情图生成后要保存,必须走 SaveButton 安全控件,由用户显式点击授权。系统不允许应用自己把文件写进用户的图库。

功能层面值得记的:

  • 用户词频学习做在端侧:输入法的体验差距很大程度在词频,而且词频属于隐私敏感数据,放本地比上云合理。
  • 表情图生成做了字号自适应(自动占满图片宽度),并且内置纯白模板之外支持从图库加自定义模板。这块比输入法本身的工作量还大。
  • 技术底座是 HarmonyOS API 12(compatibleSdkVersion 6.1.1(24))+ ArkTS + ArkUI 声明式 UI。