WEB开发网
开发学院手机开发Android 开发 android实现触摸屏校准 阅读

android实现触摸屏校准

 2010-08-22 04:54:00 来源:WEB开发网   
核心提示:移植方案Android本身并不带触摸屏校准,Android获取到的数据就是驱动上报的原始数据,android实现触摸屏校准(2),方案一 : 移植TSLIB,通过TSLIB产生 pointercal 校准参数文件, 校准程序完成有inputDevice重新启用校准算法)模拟器中至今无法进入 device.absX/Y

移植方案

Android本身并不带触摸屏校准。Android获取到的数据就是驱动上报的原始数据。

方案一 : 移植TSLIB,通过TSLIB产生 pointercal 校准参数文件。

方案二 : 从Android框架层获取OnTouch事件产生 pointercal 校准参数文件

方案一: 数据的校准在驱动中完成。 即把 pointercal 的参数数据通过某种方式(sysfs)传递给驱动程序进行校准。

方案二: 驱动上报原始点,原始点在框架层拦截后进行校验处理。

TSLIB移植过程

修改源码以适应android的文件结构。

设定Android.mk 编译选项,生成库即应用。

etc/ts.conf module_raw input

src/ts_config.c #define TS_CONF "/system/etc/ts.conf"

src/ts_load_module.c

char *plugin_directory="/system/lib/ts/plugins/";

tests/fbutils.c

char *defaultfbdevice = "/dev/graphics/fb0";

COPY ts.conf 到 /system/etc/ts.conf

init.rc. mkdir /data/etc/pointercal

通过 ts_calibrate 产生pointercal 数据文件。

框架内获取参数文件制作APK 应用,仿效ts_calibrate采点并计算出各参数,产生 pointercal框架内实现触摸屏校准在 InputDevive.java 中 拦截触摸屏原始数据进行pointercal参数校验后再分发驱动内实现触摸屏校准

在init.rc 中添加event,在触摸屏加载后把 pointercal参数输送给驱动。

结果-效果

实现细节:

扩展init - proper_serivce 系统支持的属性权限,对自定义的特殊系统属性进行权限开放。

使用自定义系统属性在 init.rc 中 on property 事件中处理pointercal的读写权限。

使用自定义系统属性 触摸屏校准程序.apk 和 InputDevice.java 中的输入事件的同步。

(在触摸屏校准期间 inputDevice 在输入事件中不能采用算法。 校准程序完成有inputDevice重新启用校准算法)

模拟器中至今无法进入 device.absX/Y != null 的代码, 需要了解以下 inputDevice 被调用的步骤。

三,触摸屏的时间流程:

驱动层:

C代码

/*

* Touchscreen absolute values

*

* These parameters are used to help the input layer discard out of

上一页  1 2 3 4 5 6 7  下一页

Tags:android 实现 触摸屏

编辑录入:coldstar [复制链接] [打 印]
赞助商链接