Android 平台的触摸屏校准原理及其实现和优化
罗永和
摘要:本文首先对触摸屏校准算法和 Android 平台的触摸屏事件处理流程进行
简单的描述。然后,针对项目中所使用的 ADS7846 控制芯片,对在 Android 平
台上实现触摸屏校准方法作了详细的分析。
关键词:触摸屏 校准 ADS7846 Android
1 触摸屏校准算法的简单介绍
1.1 触摸屏和 LCD 两者之间的坐标转换关系
触摸屏与 LCD 显示屏是两个不同的物理器件。LCD 处理的像素,例如我们通常所说的
分辨率是 800x480,实际就是指每行的宽度是 800 个像素,高度是 480 个像素,而触摸屏处
理的数据是点的物理坐标,该坐标是通过触摸屏控制器采集到的。其 X 轴和 Y 轴的范围,
一般均为 0~4095,即在驱动中用 12 位二进制数表示。因此,在触摸屏和 LCD 两者之间需
要一定坐标的转换。
在 LCD 和触摸屏两者的坐标轴完全一致(即:坐标原点对齐,且坐标轴方向一致)的
情况下,其坐标转换关系如下:
W
t
t
XtXT
XL ×
−
−
=
minmax
min
(1)
H
YtYt
YtYT
YL ×
−
−
=
minmax
min
(2)
其中,XL、YL 是 LCD 坐标,XT、YT 是触摸屏的坐标。Xtmin、Xtmax、Ytmin、Ytmax
分别是触摸屏的 X、Y 轴方向上的最小值和最大值。
1.2 触摸屏校准通用方法
由于不同的屏,存在着一些个性上的差异,其坐标最小值和最大值不尽相同,另外在安
装上也可能存在着一些差异性。因此,需要对上述公式所计算出的值进行修正。其计算公式
如下:
CBYLAXLXL +×
×='
(3)
F
YLD
LYL +×
×=' (4)
其中,XL, YL 是利用公式(1)和(2)计算出来的坐标理论上的 LCD 坐标,XL’, YL’
是触摸屏坐标修正后的 LCD 坐标。
由于具体计算是希望是整数运算,所以实际中保存的 ABCDEF 为整数,而增加一个参
数 Div,即:
DivCBYLAXLXL /)(' +×
×=
(5)
DivFEYLDXLYL /)(' +×
×=
(6)
这里需要注意的是,在网络上经常将公式(5)、(6)中的 XL 和 YL 描述为触摸屏的坐
标,从而导致了程序实现上的一个误区和校准实现的困难。其原因在于,如果框架层向应用
1
www.linuxidc.com
Linux公社(LinuxIDC.com) 是包括Ubuntu,Fedora,SUSE技术,最新IT资讯等Linux专业类网站。