首先,我最希望能改善一下用户界面。
其次,是我最想说的(如果有人在意的话)——手写板功能可能只是个绰头——我只是试试可不可以在java上跑tomoe,事实是:能,但不快。那是tomoe算法和我自身水平的问题,我觉得如果有更专业的知识,可能会有更好的识别率,这里只能抱歉地说,目前只能如此。
其三,加强日语语法方面的功能。
其四,实现一个健壮的青空文库阅读器。从目前的情况看,这是有可能的,但测试和写代码会很累。
参考:http://blog.chinaunix.net/uid-22174347-id-1786941.html
==========================================================
开发环境
编译系统 :fedora9
编译器 :arm-linux-4.4.3
主控芯片 :S3C2440
开发板 :mini2440
==========================================================
一、电阻式触摸屏工作原理
二、 S3C2440 电阻式触摸屏接口、内部ADC结构
三、Linux输入子系统(InputSubsystem)
四、mini2440触摸屏驱动分析
==========================================================
(这部分转自:http://blog.chinaunix.net/uid-22174347-id-1786941.html 文章写得很好)
四、mini2440触摸屏驱动分析
1、硬件原理图分析
S3c2440芯片内部触摸屏接口与ADC接口是集成在一起的,硬件结构原理图请看:S3C2440上ADC驱动实例开发讲解中的图,其中通道7(XP或AIN7)作为触摸屏接口的X坐标输入,通道5(YP或AIN5)作为触摸屏接口的Y坐标输入。在"S3C2440上ADC驱动实例开发讲解"中,AD转换的模拟信号是由开发板上的一个电位器产生并通过通道1(AIN0)输入的,而这里的模拟信号则是由点触触摸屏所产生的X坐标和Y坐标两个模拟信号,并分别通过通道7和通道5输入。S3c2440提供的触摸屏接口有4种处理模式,分别是:正常转换模式、单独的X/Y位置转换模式、自动X/Y位置转换模式和等待中断模式,对于在每种模式下工作的要求,请详细查看数据手册的描述。本驱动实例将采用自动X/Y位置转换模式和等待中断模式。
注意:在每步中,为了让代码逻辑更加有条理和容易理解,就没有考虑代码的顺序,比如函数要先定义后调用。如果要编译此代码,请严格按照C语言的规范来调整代码的顺序。
2、建立触摸屏驱动程序my2440_ts.c,首先实现加载和卸载部分,在驱动加载部分,我们主要做的事情是:启用ADC所需要的时钟、映射IO口、初始化寄存器、申请中断、初始化输入设备、将输入设备注册到输入子系统。代码如下:
2、接下来要做的是,在两个中断服务程序中实现触摸屏状态和坐标的转换。先看代码,如下:
3、我们从整体上描述转换这个的过程:
(1)如果触摸屏感觉到触摸,则触发触摸屏中断即进入tc_irq,获取ADC_LOCK后判断触摸屏状态为按下,则调用touch_timer_fire启动ADC转换;
(2)当ADC转换启动后,触发ADC中断即进入adc_irq,如果这一次转换的次数小于4,则重新启动ADC进行转换,如果4次完毕后,启动1个时间滴答的定时器,停止ADC转换,也就是说在这个时间滴答内,ADC转换是停止的;
(3)这里为什么要在1个时间滴答到来之前停止ADC的转换呢?这是为了防止屏幕抖动。
(4)如果1个时间滴答到来则进入定时器服务程序touch_timer_fire,判断触摸屏仍然处于按下状态则上报事件和转换的数据,并重启ADC转换,重复第(2)步;
(5)如果触摸抬起了,则上报释放事件,并将触摸屏重新设置为等待中断状态。
4、整体流程如下图所示
自定义对话框
1.需要继承 Dialog 类,
2.并要定义一个有参构造函数(因为父类里面没有无参构造函数)
3.重写 onCreate方法,一切操作将在此方法进行
流程:
为每个按钮添加监听事件,
刷新九宫格里的数字,也就是重新绘制画面(在view类中调用 invalidate();),
更新备选数字数组 ( 每次修改之后都得 进行重新计算 不可用的值 calculateAllUsedTiles() ; )
ShuduView.java
KeyDialog.java (自定义对话框)
调用 dismiss()方法从屏幕上移除对话框
keypad.xml (监听器的布局文件)
Game.java (具体的逻辑处理类)