Skip to content

ExamKeyIME 是一款专为高效信息检索和输入设计的 Android 自定义输入法。它结合了强大的离线搜题功能和便捷的剪贴板管理,旨在成为您学习和工作中的得力助手。

License

Notifications You must be signed in to change notification settings

YPYT1/ExamKeyIME

Repository files navigation

📚 ExamKeyIME

ExamKeyIME 是一款专为高效信息检索和输入设计的 Android 自定义输入法。它结合了强大的离线搜题功能和便捷的剪贴板管理,旨在成为您学习和工作中的得力助手。

✨ 功能特色

🔍 离线搜题功能

  • 多题型支持:支持单选题、多选题、判断题等多种题型。
  • 智能搜索:输入超过四个字符的关键词即可触发智能搜索。
  • 模糊匹配:采用先进的字符串模糊匹配算法,显著提升搜索结果的准确率。
  • 即时弹窗:搜索结果以悬浮弹窗形式即时呈现,4秒后自动消失,不打断工作流程。
  • 一键粘贴:在搜索结果中,轻点答案所在行,即可将其直接粘贴至当前输入框。

📋 智能剪贴板

  • 历史记录:自动保存最近500条复制内容,方便随时查阅和使用。
  • 智能队列管理:采用FIFO(先进先出)队列自动管理存储空间,确保剪贴板高效运行。
  • 时间戳标记:每条记录都附带精确到秒的保存时间,便于追溯。
  • 内容预览:列表中的每条记录都会显示前20个字符作为预览。
  • 重复内容过滤:智能识别并过滤重复的剪贴板内容,保持列表的清爽与整洁。

⌨️ 多功能键盘

  • 26键全键盘:提供标准QWERTY布局,完美支持中英文输入。
  • 九宫格T9输入:经典的九宫格输入方式,为单手操作提供便利。
  • 专用符号键盘:内置丰富的常用及特殊符号,满足多样化的输入需求。
  • 数字键盘:独立的数字输入界面,包含常用数学运算符。
  • 快捷模式切换:通过长按空格键,可以快速在中文和英文输入模式间切换。

🚀 如何安装和启用

  1. 安装应用

    • 通过 Android Studio 运行项目,或直接安装生成的 app-debug.apk 文件到您的 Android 设备上。
  2. 启用输入法

    • 打开设备的 设置
    • 进入 系统 > 语言和输入法 (或类似路径,不同厂商系统路径可能略有差异)。
    • 点击 屏幕键盘 (或 虚拟键盘)。
    • 选择 管理屏幕键盘
    • 在列表中找到 ExamKeyIME 并打开右侧的开关。系统可能会提示安全风险,请点击"确定"继续。
  3. 切换输入法

    • 打开任意一个文本输入框(如短信、搜索栏等)。
    • 键盘弹出后,您会看到屏幕右下角出现一个键盘图标,或者在通知栏中看到"选择输入法"的提示。
    • 点击该图标或提示,在弹出的列表中选择 ExamKeyIME

现在,您应该能看到 ExamKeyIME 的键盘界面了,开始享受高效的输入体验吧!

🏗️ 技术架构

核心组件

app/src/main/java/com/example/examkeyime/
├── ime/                    # 输入法核心模块
│   ├── ExamKeyIME.kt      # 主输入法服务
│   ├── ExamKeyIME_UI.kt   # 键盘UI及状态管理
├── data/                   # 数据层
│   ├── QuestionRepository.kt # 题库仓库,负责加载和解析
│   └── ClipboardStore.kt  # 剪贴板存储
├── model/                  # 数据模型
│   ├── Question.kt        # 题目数据类
│   ├── KeyboardMode.kt    # 键盘模式枚举
│   └── Search.kt          # 搜索相关数据类
├── pinyin/                 # 拼音处理
│   └── PinyinEngine.kt    # 拼音转换引擎
└── util/                   # 工具类
    ├── PinyinUtils.kt     # 拼音处理工具
    └── StringFuzzy.kt     # 模糊搜索算法

技术栈

类别 技术/库 版本 描述
核心 Kotlin 1.9.0+ 项目主要开发语言
Android Core KTX 1.13.1 提供Kotlin对Android核心API的扩展
Android Appcompat 1.6.1 兼容旧版Android的UI组件库
Android Lifecycle KTX 2.8.1 为生命周期管理提供协程支持
UI Jetpack Compose - 用于构建现代化、声明式UI
Material Design 1.12.0 Google的UI设计语言实现
ConstraintLayout 2.1.4 强大的布局管理器
异步处理 Kotlin Coroutines 1.7.3 用于管理后台任务和异步操作
数据处理 Gson 2.10.1 用于JSON数据的序列化和反序列化
Pinyin4j 2.5.1 用于将汉字转换为拼音
测试 JUnit 4.13.2 Java单元测试框架
AndroidX Test Ext 1.1.5 AndroidX测试库扩展
Espresso 3.5.1 用于UI自动化测试

架构模式

  • MVVM (Model-View-ViewModel): 采用此模式分离业务逻辑与UI,使代码更清晰、易于维护。
  • Repository模式: 创建数据仓库层,统一管理数据来源(本地文件、网络等)。
  • State-driven UI: UI状态由数据驱动,确保界面与数据的一致性。

📝 题库格式

题库文件位于 app/src/main/assets/timushuju/ 目录,支持以下Markdown格式:

单选题

1、题干内容
A、选项一
B、选项二  
C、选项三
D、选项四
答案C

多选题

1、题干内容
A、选项一
B、选项二
C、选项三  
D、选项四
答案ABC

判断题

1、题干内容
答案:是

🔧 开发构建

环境要求

  • Android Studio: Hedgehog | 2023.1.1 或更高版本
  • Kotlin: 1.9.0 或更高版本
  • Android SDK: API 34+
  • Gradle: 8.0+
  • Java: JDK 1.8

构建步骤

# 克隆项目
git clone https://github.com/YPYT1/ExamKeyIME.git
cd ExamKeyIME

# 构建Debug版本 (用于开发和测试)
./gradlew assembleDebug

# 安装到连接的设备或模拟器
./gradlew installDebug

# 构建Release版本 (用于发布)
./gradlew assembleRelease

添加自定义题库

  1. 将您的题库文件(.md格式)放入 app/src/main/assets/timushuju/ 目录。
  2. 文件名必须为 单选题.md多选题.md判断题.md
  3. 重新构建项目,题库将自动被打包进应用。

🧪 测试

自动化测试用例

项目包含一系列自动化测试,覆盖核心功能:

  1. 模式切换: 验证键盘在 普通 -> 搜索 -> 剪贴板 模式间的状态转换是否正确。
  2. 搜索功能:
    • 输入测试关键词,如 "马克思主义理论区别于其他理论的根本特征"。
    • 验证弹窗是否正确显示题干和答案 "C、实践性"。
    • 验证弹窗是否在4秒后自动消失。
    • 验证点击答案行是否能成功将内容粘贴到输入框。
  3. 剪贴板功能:
    • 验证剪贴板历史记录是否正确显示。
    • 验证点击历史条目是否能成功粘贴内容。
    • 验证FIFO队列是否在超过500条记录时正确移除最旧条目。
  4. 键盘核心功能:
    • 验证不同键盘布局(26键、9键、符号)之间的切换是否流畅。
    • 验证中英文输入模式的切换和输入结果。
    • 验证大小写切换、删除、空格等特殊按键的功能。

性能指标

  • 题库加载时间: < 2秒
  • 搜索响应时间: < 500毫秒
  • 内存占用: < 50MB
  • 电池消耗: 经过优化,对设备续航影响极小

📄 许可证

本项目采用 MIT License 开源。仅供学习和研究使用,不得用于任何商业用途。

🤝 贡献指南

我们欢迎任何形式的贡献来改进这个项目!

  1. Fork 本项目。
  2. 创建您的功能分支 (git checkout -b feature/YourAmazingFeature)。
  3. 提交您的更改 (git commit -m 'Add some AmazingFeature')。
  4. 推送到您的分支 (git push origin feature/YourAmazingFeature)。
  5. 开启一个 Pull Request

📞 联系方式


ExamKeyIME - 让学习更高效,让输入更智能 📚⌨️

About

ExamKeyIME 是一款专为高效信息检索和输入设计的 Android 自定义输入法。它结合了强大的离线搜题功能和便捷的剪贴板管理,旨在成为您学习和工作中的得力助手。

Resources

License

Stars

Watchers

Forks

Packages

No packages published