59 行
4.1 KiB
Markdown
59 行
4.1 KiB
Markdown
# 蟹蟹输入 Android应用内键盘组件
|
||
|
||
基于CrabKeyboard MIT词库,由herry重写的Android手表原生键盘组件,1.2.0 / 10200。提供可集成的 **AAR**、演示APK和独立接入示例;适用Android 8.1 / API 27及以上。
|
||
|
||
应用接入后,点击自己的输入框自动展开内置键盘。**不注册系统输入法、不要求用户切换输入法、不改变系统默认输入法。** 圆屏按每行所在高度计算安全弦宽;4×4完整候选,单字16个一页,词组扩宽或增加行高,候选不显示拼音。九宫、标准QWERTY全拼/英文、14键、数字、三页符号、Unicode删除、按住连删及光标编辑。
|
||
|
||
完全离线,无网络或外部存储权限;组件不持久化输入内容,不启用学习。密码输入默认英文并遮蔽预览。页面隐藏/销毁时清除组件会话与候选,宿主输入框中的内容仍由宿主决定如何处理。异步查询按会话序号隔离,旧结果不能回填新的输入框。
|
||
|
||
## 一分钟接入
|
||
|
||
将发行版`crab-keyboard-1.2.0.aar`放入宿主`app/libs/`:
|
||
|
||
```groovy
|
||
dependencies { implementation files('libs/crab-keyboard-1.2.0.aar') }
|
||
```
|
||
|
||
```java
|
||
import com.sydxky.crabinput.CrabKeyboard;
|
||
|
||
// Activity 的 UI 线程,已有 EditText;attach 返回一个可关闭绑定。
|
||
CrabKeyboard.Binding keyboard = CrabKeyboard.attach(this, editText);
|
||
// 已有自己的焦点/点击处理时,可在相应事件调用 keyboard.show()。
|
||
// Activity 销毁时可显式 keyboard.close(),重复关闭安全。
|
||
```
|
||
|
||
`attach`会接管该输入框的焦点和点击监听器,并关闭此框的系统软键盘自动显示。`show()`、`dismiss()`、`close()`在UI线程调用。自动监听宿主Activity停止和销毁,停止时关闭会话,关闭绑定时恢复输入框原来的软键盘显示属性。组件通过该输入框的Editable/InputConnection回填,支持选区和数字/密码/网址InputType。窗口为宿主应用自己的Dialog,不申请悬浮窗权限。
|
||
|
||
需要保留自定义监听器时,先取得绑定,再在自定义事件中调用`keyboard.show()`;不要重复绑定同一个输入框。`host/`是独立包名的最小接入示例,`app/`是完整演示。未接入的应用继续使用原有系统输入法。
|
||
|
||
## 模块与构建
|
||
|
||
| 模块 | 用途 |
|
||
| --- | --- |
|
||
| `keyboard/` | 原生公开组件、词库、MIT许可,生成AAR |
|
||
| `app/` | 圆屏演示APK,包名`com.sydxky.crabinput` |
|
||
| `host/` | 独立应用集成示例,证明组件可由其他应用接入 |
|
||
|
||
准备JDK 17、Android SDK compile 37及Python 3。词库位于同仓库RTOS目录,SDK/私钥不随源码分发。
|
||
|
||
```powershell
|
||
python scripts/build-dictionary.py
|
||
.\gradlew.bat :keyboard:testDebugUnitTest :keyboard:lintRelease :keyboard:assembleRelease :app:lintRelease :app:assembleDebug :host:assembleDebug
|
||
# 演示APK正式签名由本机受保护文件提供;组件AAR无须应用签名。
|
||
.\gradlew.bat :app:assembleRelease -PreleaseSigningProperties=<本机签名配置路径>
|
||
```
|
||
|
||
输出`keyboard/build/outputs/aar/keyboard-release.aar`。SQLite词库无损转换并全量回读104,837组索引、163,238候选;数据库是可生成的本地资产,不进入Git。正式APK必须使用已批准签名,签名材料不公开。
|
||
|
||
## 真机验证
|
||
|
||
短时验收在已连接的OWW261上使用真实EditText和公开组件,通过UiAutomator点击操作,不直接调用键盘内部状态代替交互;比较测试前后系统默认输入法保持一致。范围及截图见[1.2.0验收](./VALIDATION_1.2.0.md)。演示应用内即可测试,无需启用或切换系统输入法。
|
||
|
||
```powershell
|
||
.\gradlew.bat :app:assembleAndroidTest :host:assembleDebug -PimeTestBuildType=release -PreleaseSigningProperties=<本机签名配置路径>
|
||
python scripts/validate-device.py --serial <已连接手表序列号> --output <本地证据目录>
|
||
```
|
||
|
||
源码、截图及下载:<https://git2.sydxky.cn/sydxky/crab-input-rtos>。MIT允许商用,保留[LICENSE](./LICENSE)、[NOTICE](./NOTICE.md)及词库/jieba许可。AndroidX/JUnit仅用于测试;AAR无第三方运行时依赖。当前是组件和演示验收,未进行商店审核。
|