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 记录触屏坐标,android 屏幕坐标总结

    把它们总结下来,以备不时之需. 一.视图坐标 最外面一层是屏幕,左上角是坐标原点,向右向下是x.y正方向.中间那层是父视图,里面是具体的某个子view.分为三组: getX:子view左边到父视图左边 ...

  3. android触屏压力方案,触摸屏实现原理与在android上实现.doc

    PAGE 6 武汉工程大学邮电与信息工程学院毕业设计(论文) 武汉工程大学邮电与信息工程学院 毕业设计(论文) 触摸屏的实现原理及在android上的实现 The Principle of the T ...

  4. Unity Android手机触屏事件

    一: 下面先说经常用的三个事件 手指按下.手指移动.手指松开 1. 手指按下 if(input.touchCount==1) {if(input.touches[0].phase==TouchPhas ...

  5. Unity Android手机触屏事件

    一: 下面先说经常用的三个事件 手指按下.手指移动.手指松开 1. 手指按下 if(input.touchCount==1) {if(input.touches[0].phase==TouchPhas ...

  6. android framelayout触屏监听,AppBarLayout.OnOffsetChangedListener的使用

    先看看官网对于AppBarLayout.OnOffsetChangedListener的解释: Interface definition for a callback to be invoked wh ...

  7. android 多点触控缩放,Android多点触控(图片的缩放Demo)

    本文主要介绍Android的多点触控,使用了一个图片缩放的实例,来更好的说明其原理.需要实现OnTouchListener接口,重写其中的onTouch方法. 实现效果图: 源代码: 布局文件: ac ...

  8. android手机冻屏问题,android 模拟冻屏 代码实现

    思路: 第一种方案:屏蔽除power外的其他按键,屏蔽状态栏下拉,屏蔽触屏. 代码如下: 需要系统签名: 添加权限: package com.example.demo; import android. ...

  9. android长截屏代码,android长截屏原理及实现代码

    android长截屏原理及实现代码 发布时间:2020-08-31 06:55:16 来源:脚本之家 阅读:158 作者:Android笔记 小米系统自带的长截屏应该很多人都用过,效果不错.当长截屏时 ...

最新文章

  1. 大数据治理需要具备哪些能力和关键技术?
  2. 日志库EasyLogging++学习系列(11)—— 共享日志库
  3. 今晚直播 | 清华大学NLP组刘正皓:神经信息检索的进展与挑战
  4. dede使用方法----调用导航
  5. 纯新手DSP编程--5.21--RTDX
  6. 暑假训练round2 D: 好序列(Manacher)
  7. VS2015 Visual Assist X 破解版安装教程
  8. fseek函数的用法
  9. my ReadBook_zhulidianzishangwushi / dianzishangwushi
  10. python小于_删除python中小于某个值的行
  11. Sliding Window Maximum
  12. 全球破解组织网址大全
  13. 掌握“盘带技术”——比较磁盘存储和磁带存储
  14. 基于java web的在线电影网_视频点播系统-计算机毕业设计
  15. SolrCloud 的搭建、使用
  16. citra 图形设置_功能强大的图形绘制软件
  17. 低代码之间到底有些什么区别?对比编译型平台“iVX 无远 牛刀”以及接口型平台“明道 宜搭 简道 轻流 氚云 ”
  18. 人力资源后台管理系统之合同—— 电子签章功能
  19. 谁能告诉我微信APP营销到底怎么做?
  20. 【高数】用拉格朗日中值定理解决极限问题

热门文章

  1. 守望先锋世界观架构 ——(一款好的游戏是怎么来的)
  2. 小米将在武汉建1万人研发中心
  3. RK61 蓝牙机械键盘配合 karabiner 软件适配 MAC 系统脚本
  4. RK61键盘使用说明书
  5. 4键电子手表说明书_电子表通用说明书
  6. 数组----二维数组
  7. JavaScript--AJAX页面传值
  8. sessionregistry一直为空得_天地为书房
  9. IDEA 启动tomcat 或者springboot 卡住问题
  10. CAPICAPICOM的一些知识[转]