admin管理员组文章数量:1633988
花了一个星期, 终于实现出一个简易的手写输入法。 见图
整个过程涉及到了一系列自己不熟悉的东西,为此走了些弯路,其中:
Android编译系统
手写引擎用的是汉王, 汉王整个是用汇编实现, 这里采用的编译方法是先将汉王编程静态库,再编成动态库。
Android平台简化了Makefile的编写,写编译的脚本比较容易, 其中也碰到一些问题可以看看
http://blog.csdn/linux_lyb/archive/2009/05/07/4156572.aspx
JNI(JAVA本地接口)
由于引擎非java实现, 引擎的使用只能是通过调用本地接口来完成。 JNI不复杂, 只是一开始没有接触过, 在对象的路径、名称、函数定义等基础上出现人为失误,导致调用不成功。
java数据类型
返回识别的结果, 我定义了2种接口, 返回jstring和jbyteArray, 其中jbyteArray的赋值一直理所当然的以为用memcpy, 结果是必须使用java提供的接口, 类似(*env).SetByteArrayRegion(result, 0, byteSize, (jbyte*)&retbuf[0]);
编译知识
有一个问题说出来比较丢脸, 最初在编译的过程中,一直找不到汉王引擎函数的定义,链接不成功。起初一直以为问题出在编译参数、编译器版本、汇编语法上, 忘了留意到一个细节, JNI由c++实现, 最后头文件里加上extern "C"解决。
下一步: 全屏手写输入的实现, 主要是:
1、Touch事件的获取
直接从窗口管理器获取或者从底层的事件服务里获取。
为了让在全屏手写的时候, 其它窗口的控件也能收到Touch事件, 必须将非手写需要的事件回送。
2、笔迹的绘制
直接写屏或者使用android平台已有的接口。
涉及到屏幕的更新, 笔迹的绘制和清除。
创建一个透明窗口来简化处理这些, 不知可行否, 都需要验证。
版权声明:本文标题:手写输入法实现过程中的问题 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1729186510a1189091.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论