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

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

 

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

 

Android编译系统

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

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

http://blog.csdn.net/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平台已有的接口。

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

 

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

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
### 回答1: Qt5是一种跨平台的应用程序开发框架,它提供了丰富的功能和工具,可以帮助开发者快速构建高效、美观的应用程序。而输入则是指可以通过汉字来输入文字的一种输入方式。 在Linux系统上,我们可以使用Qt5来开发输入。首先,我们需要使用Qt Creator这样的集成开发环境来编代码。我们可以通过Qt的输入框架来获取用户的输入,并将内容转换为文字。 在输入的开发过程,我们需要处理用户输入的笔划信息。Linux系统提供了一些输入设备的驱动程序,我们可以通过Qt的输入事件处理接口来捕获用户使用设备的动作,例如笔的坐标、压力等信息。通过分析用户的笔画轨迹,我们可以将其转化为文字。 在将的笔画转换为文字的过程,我们可以使用一些机器学习算,如支持向量机、神经网络等,来识别汉字。这些算可以通过训练获取到大量样本数据,从而提高汉字识别的准确性。 此外,我们还可以借助Qt提供的绘图功能,将用户的笔画实时显示在屏幕上,以便用户检查和修改输入内容。同时,也可以为输入添加一些自动校正和建议功能,提高输入效率和准确性。 总的来说,使用Qt5开发输入可以实现在Linux系统上通过输入文字的功能。通过处理用户的笔画和借助机器学习算来识别汉字,我们可以提供一个高效、准确的输入体验。 ### 回答2: Qt5输入是一种在Linux操作系统上使用的输入方式。Qt5是一种跨平台的应用程序开发框架,它提供了丰富的工具和功能,用于开发各种类型的应用程序,包括输入输入是一种通过方式输入文字的输入方式。它使用特殊的识别算和技术,将用户的字符转换为可识别的文字。在Linux系统上,Qt5输入可以提供给用户一个方便快捷的输入方式。 Qt5输入的功能包括识别、字符转换和输入。用户只需要在电脑上使用指定的输入设备(如触摸屏或板),将的字符输入到应用程序。Qt5输入会根据用户的输入,使用内置的识别算,将的字符转换为可识别的文字。用户还可以通过输入输入文字,而不是使用键盘输入。 Qt5输入的优点是可以提高用户的输入效率和准确度。对于习惯使用方式的用户来说,输入更加自然和方便。此外,由于Qt5是一种跨平台的框架,Qt5输入也可以在其他操作系统上使用,例如Windows和Mac OS。 总之,Qt5输入是一种在Linux系统上使用的输入方式,它利用Qt5框架提供的功能和工具,可以方便用户进行输入,提高输入效率和准确度。
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值