1.简述

android 的坐标转换处理:

This implementation is a linear transformation using 7 parameters

(a, b, c, d, e, f and s) to transform the device coordinates (Xd, Yd)

into screen coordinates (Xs, Ys) using the following equations:

s*Xs = a*Xd + b*Yd + c

s*Ys = d*Xd + e*Yd + f

Xs,Ys:LCD坐标

Xd,Yd:触摸屏坐标

在编译好了的ANDROID根文件系统的system/etc/pointercal这个文件内,存放着7个数,

这7个数就是对应上面公式的a,b,c,d,e,f,s

比如我原来的:(如果表格没对齐,请拷到记事本里面看)

+----+-----+--------+------+--+--------+----+

| a | b | c     | d    |e |   f    | s |

+----+-----+--------+------+--+--------+----+

|-411|37818|-3636780|-51325|39|47065584|6553|

+----+-----+--------+------+--+--------+----+

2.处理说明:

“system/etc/pointercal”这个文件是被java程序读取使用的,文件目录:

f rameworks/base/services/java/com/android/server/InputDevice.java

---注:我用的是koolu的源码(),官方的源码请自行搜索。

该文件的第32行定义了:static final String CALIBRATION_FILE = "/system/etc/pointercal";

这个CALIBRATION_FILE变量在第237行被使用于打开该文件:

FileInputStream is = new FileInputStream(CALIBRATION_FILE);

后面的代码就是从这个文件里读取那7个数据,用于上层函数的坐标转换。

所以只要根据该公式通过手工计算出那7个值,就可以准确的进行触摸操作了。

3.计算

计算前需要取得4个触摸屏的坐标,我们取LCD 4个对角的坐标,因为只有这4个坐标知道确切的LCD坐标。

要取坐标必须打开内核中触摸屏的调试代码,启动后在console上使用dmesg命令来跟踪取得。

我是在一个角上用笔点一下,再用dmesg调出记录,然后记录下来。如下是我的320x240屏记录的结果:

坐标轴里小括号()里面的是调试信息给的触摸屏坐标,中括号[]里的是对应的LCD坐标。

x坐标

/|\

|(X:870, Y:140)   (X:870, Y:890)

| [320,0]          [320,240]

|

|

|

+-------------------------------> y坐标

(X:120, Y:140)    (X:120, Y:890)

[0,0]             [0,240]

*LCD 分辨率:320 x 240 ,也是LCD坐标的最大值

x     y

设定s=65536

将那4个坐标代入那个公式,可以得出8个方程组

0 = a*120 + b*140 + c

0 = d*120 + e*140 + f

0 = a*120 + b*890 + c

65536*240 = d*120 + e*890 + f

65536*320 = a*870 + b*140 + c

0 = d*870 + e*140 + f

65536*320 = a*870 + b*890 + c

65536*240 = d*870 + e*890 + f

解方程组后就可得:

a = 0

b = 20971

c = -2935940

d = 27962

e = 0

f = -3355440

s = 65535

然后用工具打开andriod的“system/etc/pointercal”文件,把这几个数输进去,用空格分开,

注意不要改文件结尾的两个字节0x00 0x0A,我是用Ghex工具打开的,在右边窗口中进行输入,在编辑里可以切换插入和覆盖模式。

此时启动试试。

我的屏到这个步骤后触摸操作的左右变成了上下,上下变成了左右操作,

处理方法:把a,b,c值和d,e,f值分别对调。

再启动试试。。

还是不行,左右是正确的,上下是反的。

处理方法:

把Y坐标再反向的公式:

Ys‘ = 320 - Ys = 320 - (a*Xd + b*Yd + c)/s

重新计算a,b,c的值,就OK了。

现在我点击计算器的按钮等操作都很准了,指哪打哪。

前面发的那个视频里的坐标是在内核里调的坐标,不是很准。

这是手工调的方法,如果要用程序校准的话可以用tslib,有时间再玩下。

android触摸屏坐标,android触摸屏坐标手工校准/调整成功相关推荐

  1. android 记录触屏坐标,android触摸屏坐标手工校准/调整成功

    1.简述 android 的坐标转换处理: This implementation is a linear transformation using 7 parameters (a, b, c, d, ...

  2. android motionevent 坐标,Android MotionEvent详解

    在前边几篇博文中(<图解Android事件传递之ViewGroup篇>,<图解Android事件传递之View篇>),我们已经了解了android触摸事件传递机制,接着我们再来 ...

  3. android设置控件的坐标,Android中使PopupWindow显示在指定控件的上下左右!

    **1.View中的方法getLocationOnScreen(int[] location):获取该控件在屏幕中的绝对坐标并将坐标保存在数组中:如下图所示,A为屏幕的原点,R,C点即为view的绝对 ...

  4. android touch事件坐标原点,Android – 捏缩放ontouch事件坐标

    我正在尝试获取我正在创建的 Android应用程序的画布坐标.它很有用,直到我添加代码以使用缩放焦点(以下两行): scalePoint.setX((int) detector.getFocusX() ...

  5. Android 高德地图给指定坐标显示图片,以及聚合显示

    官网实例请点击:Android 高德地图聚合官网 下面是一个案例: 效果图: MainActivity public class MainActivity extends AppCompatActiv ...

  6. 【Android每周专题】触摸屏手势

    本系列文章均为A2BGeek原创,转载务必在明显处注明: 转载自A2BGeek的[Android每周专题]系列,原文链接:http://blog.csdn.net/benbmw2008/article ...

  7. android uinput 按键_Android 触摸屏Event上报操作

    手机设备上常用触摸屏进行用户操作,非常方便快捷,而且正好有个项目上用到这个设备,所以就花时间研究了一下.好了,还是老规则:大体了解概念先,细节线索找代码: InputReader.cpp 中有针对单点 ...

  8. android获得图片的坐标,Android百度地图定位后获取周边位置的实现代码

    本文实例讲解Android百度地图定位后获取周边位置的实现代码,分享给大家供大家参考,具体内容如下 效果图: 具体代码: 1.布局文件 android:orientation="vertic ...

  9. Android Java GPS坐标与高斯坐标相互转换(二)

    Android Java  GPS坐标与高斯坐标相互转换(二) 高斯坐标转GPS坐标: 前边写了GPS坐标转高斯坐标了,详情可以查看:Android Java GPS坐标与高斯坐标相互转换(一) GP ...

最新文章

  1. API 分页探讨:offset 来分页真的有效率吗?
  2. navigator工具_推荐!11个令人惊叹的前端开发工具,值得拥有
  3. 使用C#和Excel进行报表开发(5)
  4. redis配置文件的介绍
  5. python 返回函数 闭包_python中闭包Closure函数作为返回值的方法示例
  6. PInvoke在 2.0 3.0的时候正常 升级到4.0后出错。
  7. Repeater的ItemCommand事件和ItemCreated事件,高手请跳过~
  8. 并发学习之CyclicBarrier循环栅栏
  9. CSDN搜索可以搜博客代码了
  10. Oracle11.2.0.4升级补丁包
  11. 看完知乎轮子哥的编程之路,我只想说,收下我的膝盖。。。
  12. 删除word文档中的空白页
  13. 岁月温柔-23 妈妈转到省医院第3天 突然icu有床位了
  14. swf游戏保存进度_手机玩swf游戏你需要知道的冷知识
  15. python脚本自动发送邮件和叮叮机器人发送群消息
  16. (栈的应用5.2.2)POJ 2106 Boolean Expressions(表达式求值)
  17. 西电 计算机学院 博后流动站,西电7个博士后科研流动站接受专家组综合评估检查...
  18. 机器学习中的启发式算法(heuristic algorithm)
  19. Excel如何快速提取图片地址位置?
  20. 初中计算机毕业测试,2019年初中信息技术毕业考试顺利结束

热门文章

  1. 计算机视觉中的十万个[为]什么(1)
  2. abp框架(aspnetboilerplate)扩展系统表
  3. 系统思考:智猪博弈(结构影响行为)
  4. 【物理应用】内联全息图外推算法matlab代码
  5. 有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。 问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。 问第2个人,说比第一个人大两岁。 最后问第一个人,他说是10岁。请问
  6. 最牛最全js身份证号校验方法
  7. 1,Linux命令行设置中文显示
  8. 注册表完全恢复手册(转)
  9. Qt实现中国象棋:(四)棋子绘制的实现
  10. 史上最全的免费开源ERP Odoo14产品档案设置应用教程