android触摸屏校正详解

最近一段时间在搞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

四、修改触摸屏校正程序
  修改onTouchEvent(CalibrationTest.java)
  CalibrationTest.java这里是我使用的触摸屏校正程序,我的屏的分辨率为800*480,所以改成
      mResultPts[(STEP -1) * mPtsLength] = event.getX()*4095/(800-1);
      mResultPts[(STEP -1) * mPtsLength + 1] = event.getY()*4095/(480-1);
     
修改AndroidManifest.xml 增加
 android:sharedUserId="android.uid.system"
 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="touchscreen.test" android:sharedUserId="android.uid.system">
 修改 Android.mk增加
 LOCAL_CERTIFICATE := platform
   
五、修改init.rc增加
#create tslib
    mkdir /data/system/tslib/ 0777
    chmod 0666 /data/system/tslib/pointercal
触摸屏校正看来起貌似简单,但要改的东西确实太多,我自己也是摸索了好几天才搞定的,呵呵!
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值