700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 手写输入法实现过程中的问题

手写输入法实现过程中的问题

时间:2024-02-04 03:10:13

相关推荐

手写输入法实现过程中的问题

花了一个星期, 终于实现出一个简易的手写输入法。 见图

整个过程涉及到了一系列自己不熟悉的东西,为此走了些弯路,其中:

Android编译系统

手写引擎用的是汉王, 汉王整个是用汇编实现, 这里采用的编译方法是先将汉王编程静态库,再编成动态库。

Android平台简化了Makefile的编写,写编译的脚本比较容易, 其中也碰到一些问题可以看看

/linux_lyb/archive//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平台已有的接口。

涉及到屏幕的更新, 笔迹的绘制和清除。

创建一个透明窗口来简化处理这些, 不知可行否, 都需要验证。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。