精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
锐英源精品开源,禁止转载和任何形式的非法内容使用,违者必究
本文主要是一些提示,要做具体的开发请到github上找一些例子参考下,锐英源曾经研究过很多例子,这里也对贡献例子的开发者致谢。
• IMF 的结构
• Key Event 的处理过程
• IME 实现
• 使用JNI
android.view.ViewRoot
com.android.server.WindowManagerService
IWindowSession openSession(IInputMethodClient, IInputContext)
deliveryKeyEvent() deliveryKeyEvenToViewHierarchy()
view.dispatchKeyEventPreIme()
view.dispatchKeyEvent()
创建工程
• IME安装、注册
• 激活输入法
• IME的界面与事件响应
• 发送候选字
• 按键音与振动
• 偏好设置
• 状态栏
android create project
--package com.redirectin.android.ime
--name iCosta --activity iCosta
--target 2 --path .
• android create avd --target 2 --path /android/avd/goldfish --name goldfish
• emulator -avd goldfish
• ant debug | install | reinstall
Tip: ~sdk1.5\platforms\android-1.5\templates\android_rules.xml
软键盘
✦ View,与应用GUI完全相同
✦ 系统自带了Keyboard/KeyboardView
• 硬件键盘
✦ IME Service总是拦截键盘事件
JNI可以调用用C++底层,在码表查找上高效处理,节省响应时间。
.so => libs/armeabi
• /data/data/pkg_name/lib/libxxx.so
• java: System.load(“xxx”);
库要安装上,如果不安装,激活输入法会提示该软件停止运行错误。