最近一段时间在搞android的触摸屏校正,想把心得记下来与大家分享,废话不多说,开始讲解.
注:调试使用的是伟研科技(www.gzweiyan.com)210开发板,android版本 2.2 ,内核是2.6.32
一、修改内核驱动
修改触摸屏驱动(kernel/drivers/input/touchscreen/s3c-ts.c)
这样做的目的是根据使内核不使用限定好的坐标范围,x,y的坐标范围还原成0-4095
二、修改property_service.c(android2_2/system/core/init/property_service.c)
在property_perms增加
{ "ts.config.calibrate" , AID_SYSTEM, 0 }
这样做的目的是为可以了后面使用触摸屏校正程序可以对ts.config.calibrate这个系统属性进行操作,后面会说到.
三、修改InputDevice.java(android2_2/frameworks/base/services/java/com/android/server/InputDevice.java)
在generateAbsMotion函数中增加
这里使用到系统属性ts.config.calibrate,当系统判断为现在处于触摸屏校正模式的时候(也就是ts.config.calibrate值为start的时候),不对驱动传递上来的坐标值进行转换.
上面第二点在在property_perms增加{ "ts.config.calibrate" , AID_SYSTEM, 0 }是为了系统有权限可以设置/读取这个属性
增加函数
修改InputDevice函数
编译后生成services.jar,须替换android文件系统里面的system/framwork里面的services.jar