android实现触摸屏校准
7寸迪文安卓屏-用户手册
专业素养·诚实守信·追求卓越DMT80480T070-31WT/32WT用户手册V2.0DMT80480T070-31WT/32WT用户手册1.概述 (2)2.系统规格 (2)3.操作说明 (5)3.1开机画面更改 (5)3.2隐藏/显示状态栏 (6)3.3亮度 (6)3.4声音 (7)3.5WI-FI (7)3.6以太网 (8)3.73G网络 (9)3.8文件管理器 (10)3.9应用安装与卸载 (11)3.10显示触摸提示 (11)3.11触摸屏校准 (11)3.12串口测试 (12)3.13连接PC (13)3.14备份和重置 (14)4.修订记录 (14)1.概述迪文安卓产品系列包括7寸(800*480),8寸(800*600),9.7寸(1024*768),10.4寸(800*600),15寸(1024*768)以及支持VGA/HDMI接口输出的控制板。
本文旨在介绍7寸安卓产品DMT80480T070-31WT(电阻触摸屏)、DMT80480T070-32WT(电容触摸屏)的使用和操作,其主要特点如下:◆宽压供电:+6V~+42V/+5V;◆24位真彩色;◆1G双核,512MB DDR3内存,4G NAND Flash,高性能,低功耗;◆电容屏和电阻屏选配,或者不带触摸屏;◆模拟视频(支持PAL/NTSC制),支持拍照和摄像功能;◆两个USB接口,可支持USB3G网络、USB相机、U盘、USB键盘和USB鼠标等;◆支持Micro SD卡;◆4路串口,支持TTL和RS232;◆支持10M/100M以太网和802.11b/g/n WIFI无线网络;◆支持播放分辨率高达1080P的视频,格式包括:H.264、VC-1、MPEG-2、MPEG-4和RealVideo;◆以H.264格式视频编码分辨率高达1080P;◆提供1W功率的扬声器接口,提供麦克接口;◆Android4.1系统,支持各种APP应用;2.系统规格迪文安卓系列产品具备高速度的CPU处理能力,支持流畅的1080P的视频解码和编码以及丰富的外围接口资源,提供良好的3G体验。
电容触摸方案
三、方案详述
1.合法合规性
(1)严格遵守国家关于电子信息产品的相关法规及标准;
(2)选用环保材料,确保产品对人体及环境无害;
(3)符合RoHS指令要求,降低有害物质含量;
(4)进行可靠性测试,确保产品在正常使用条件下的性能稳定。
2.技术选型与设计
(1)触摸技术:采用高性能、多点触控的电容触摸技术;
(2)采用高精度生产设备,提高生产效率;
(3)加强生产过程控制,降低不良率;
(4)成品检测:确保产品符合设计方案。
四、实施策略
1.组建专业的项目团队,明确各成员职责;
2.编制详细的设计文档,指导设计工作;
3.开展技术选型、设计优化、算法优化等工作;
4.组织生产制造,确保产品质量;
5.进行产品测试,验证方案效果;
6.持续优化,提升产品性能。
五、风险评估与应对措施
1.技术风险:关注行业动态,及时更新技术方案;
2.合规风险:与政府部门保持沟通,确保方案合法合规;
3.市场风险:深入了解市场需求,适时调整产品策略;
4.生产风险:加强生产过程控制,提高生产效率。
六、总结
本方案旨在为某电子产品提供一整套合法合规、性能优越的电触触摸解决方案,满足市场需求,提升用户体验。在实施过程中,需密切关注各方面风险,确保项目顺利进行。通过本方案的实施,将为产品带来更高的市场竞争力,满足用户需求。
1.确保电容触摸技术的合法合规性,遵循相关法规和标准;
2.提高触摸屏的灵敏度、准确性和稳定性;
3.提升用户体验,降低误触率;
4.优化触摸屏结构设计,降低成本。
三、方案内容
1.合法合规性
(1)遵循国家相关法规和标准,如《电子信息产品污染控制管理办法》等;
Ss2000m触摸屏9点校正软件安装教程
6:打开控制面板,触摸式面板,校准,执行位置调整。
7:出现的校准界面已经是9点校准了,校准后完美对应手写笔
ss2000m触摸屏9点校正软件安装教程触摸屏校正软件手机触摸屏安装教程电脑触摸屏校正软件触摸屏校正安卓手机触摸屏校正佳能2520i触摸屏校正小米3触摸屏校正电脑触摸屏校正台达触摸屏校正
Ss2000m
1:将9点校正软件拷贝到本机硬盘,如D盘,解压到当前目录
2:在我的电脑上右键,属性,硬件,设备管理器
android setcanceledontouchoutside原理
android setcanceledontouchoutside原理摘要:1.Android setCanceledOnTouchOutside 原理概述2.setCanceledOnTouchOutside 的作用3.setCanceledOnTouchOutside 的工作原理4.使用setCanceledOnTouchOutside 的场景和注意事项5.总结正文:【1.Android setCanceledOnTouchOutside 原理概述】Android 中的setCanceledOnTouchOutside 是一个常用的属性,它主要用于处理触摸屏操作。
当一个触摸事件被触发时,setCanceledOnTouchOutside 可以取消当前触摸事件,防止其被其他控件接收。
这对于处理复杂的触摸交互逻辑非常有用。
【2.setCanceledOnTouchOutside 的作用】setCanceledOnTouchOutside 的作用主要体现在以下几个方面:- 避免触屏操作冲突:当用户在屏幕上同时触摸两个控件时,setCanceledOnTouchOutside 可以保证只有一个控件能够接收到触摸事件,避免出现多个控件同时响应触摸事件的情况。
- 优化用户体验:在一些场景下,用户可能会不小心触发其他控件的触摸事件,导致界面跳转或执行其他操作。
通过使用setCanceledOnTouchOutside,可以减少这种情况的发生,提高用户体验。
- 实现复杂交互逻辑:在一些复杂的触摸交互场景下,setCanceledOnTouchOutside 可以帮助开发者实现更加复杂的交互逻辑,例如游戏中的多点触控操作等。
【3.setCanceledOnTouchOutside 的工作原理】setCanceledOnTouchOutside 的工作原理主要基于Android 的触摸事件分发机制。
在Android 中,触摸事件会按照一定的优先级分发给各个控件。
触摸屏校正方法
触摸屏校正方法 The document was finally revised on 2021
用久了出现在触摸不准不灵敏的时候的校正方法:
1、将触摸屏背面的四个拨码开关,第一个设置为ON,其余三个拨码开关位置保持不变。
正常情况下四个拨码开关均在OFF的位置,如下图:
将第一个拨码开关设置为ON (上图)
2、按一下拨码开关旁边的黑色的Reset(复位)按钮或者将人机界面重新上电。
3、人机界面启动后,会要求对触控面板进行触控校正。
校正的方法为人机界面屏幕上出现的十字光标在什么位置就触控一下这个位置,直到十字光标消失,人机界面会继续往下执行启动过程
4、校正完之后,会弹出如下对话框,询问是否要恢复为出厂设置密码如下图,请选择NO 校正完成。
记得把第一个将第一个拨码开关设置回OFF
TK6070需要把J3端子的1-2短接就行,校准完成后在恢复到7-8短接。
触摸屏校准方法
嵌入式Linux和MiniGUI结合的解决方案已经成为很多嵌入式系统的图形化方案之一,而触摸屏也是很多嵌入式系统首选的输入设备,因此触摸屏的校准也成为很多嵌入式系统开发过程中常常碰到的问题之一。
嵌入式Linux是一种可以进行裁减、修改使之能在嵌入式计算机系统上运行的操作系统,既继承了Internet上的无限的开放源代码资源,又具有嵌入式操作系统的特性。
该系统具有较高的稳定性和安全性、良好的硬件支持、标准兼容性和资源丰富等功能。
而触摸屏是一种方便、快捷的输入设备,附着在显示器的表面,与显示器配合使用,在工业控制场合得到了广泛的应用。
然而在实际的嵌入式程序移植的过程中,由于触摸屏尺寸的不同,以及GUI(Graphic User Interface)方案选择和IAL(Input Abstract Layer)的差异,一般开发板制造商并不提供触摸屏的校正程序。
本文介绍的正是笔者在制作实际的嵌入式Linux数控机床人机接口过程中,提出的一套基于嵌入式Linux和MiniGUI的通用触摸屏校准程序设计方案。
MiniGUI简介MiniGUI()是国内最有影响的自由软件项目之一, MiniGUI 项目的目标是为基于 Linux 的实时嵌入式系统提供一个轻量级的图形用户界面支持系统。
该项目自1998年底开始到现在,已历经7年多的开发过程,到目前为止,已经比较成熟和稳定,并且在许多实际产品或项目中得到了广泛应用。
MiniGUI 为应用程序定义了一组轻量级的窗口和图形设备接口。
利用这些接口,每个应用程序可以建立多个窗口,而且可以在这些窗口中绘制图形且互不影响。
用户也可以利用MiniGUI 建立菜单、按钮、列表框等常见的 GUI 元素。
MiniGUI 可以具有两种截然不同的运行时模式:MiniGUI-Threads或者MiniGUILite。
运行在 MiniGUI-Threads 上的程序可以在不同的线程中建立多个窗口,但所有的窗口在一个进程中运行。
N19使用说明及其技巧(1)
N19使用及其技巧一.外观及各接口介绍要点注意:1.开关键---开机状态下短按可以实现休眠、唤醒的功能,如果长按则可关机 2.音量加减键----此按键长按实现音量加减功能,短按音量加按键则为菜单键功能,可以调出很多隐藏菜单,功能同短按音量减按键则为返回按键,用于返回程序上一层或者是网页上一页。
3.主屏幕键---使用应用程序或者打开网页时候,可以短按主屏幕键以关闭程序和网页并返回到主屏幕。
此按键如果长按的话可以看到最近访问程序。
4.SIM卡槽限于3G型号机器,使用时候只需将3G资费卡放进卡槽,然后再机器中做简单设置既可以使用3G上网。
二.主屏幕介绍1.主屏幕上方横条各图标介绍返回程序或者网页上一层 3G信号标志音量加减菜单键此图标表示,机器通过USB连接上电脑WIFI无线网络信号标志返回主屏幕电池指示2.程序界面点击主界面下方方格按键,可以进入程序菜单,点击程序菜单下单房子按键可以返回主界面。
如果需要将程序放到桌面,请按住任意程序1秒以上,程序的图标会自动显示在桌面上3.拷贝数据由于安卓系统中连接USB后会存在同步模式和usb数据拷贝模式,单纯的将平板和电脑用USB连起来并不能进行数据拷贝,还需在平板上进行数据模式切换首先用USB数据线连接电脑端和平板端接口小提示,用USB 接电脑后,在我的电脑中会出现4个可移动磁盘,但是任意一个点击都会提示请插入磁盘,这个是由于在平板上需要加载一下磁盘驱动,方法如下:按住横条可以拉出一条隐藏菜单,右图选择USB 已连接选择USB 已连接,会出现一个绿色机器人界面,接着选择打开USB 存储设备,本机就完成了和电脑相连,可以在电脑中找到第一个U 盘图标,进行数据拷贝。
(注意:在拷贝数据时候,机器内存的数据无法访问,所以请在拷贝数据结束后,点击关闭存储设备)4.桌面菜单按住主界面任意处一秒钟便会弹出一个菜单,在此菜单中可以设置壁纸,建立文件夹,建立桌面小部件等功能建立桌面部件功能桌面小部件功能选择桌面小部件可以调出小部件菜单,里面有一些实用的桌面部件的建立方式:如主界面上显示的天气预报,个性化时钟,日历,音乐部件,等等音乐部件 时钟部件天气预报部件分类桌面图标当桌面的程序图标越来越多时,会觉得很凌乱,其实系统可以实现程序的分类,我们需要在桌面建立文件夹然后将程序放入对应文件夹就可以进行整理了调出主界面添加菜单如下,选择文件夹选项然后选择新建文件夹,在桌面建立一个新的文件夹桌面文件夹建立后,可以将桌面的程序图标拖到文件夹中进行分类按住文件夹上方可以对文件夹进行重新命名删除桌面程序图标按住任意一个程序图标,在主屏底部会出现一个回收站图标,只需将要删除的图标拖入回收站即可。
触摸屏的校准方法
本文介绍的校准方法需要三个目标点/或测试点,然后依次进行触摸测试,以确定该显示屏特有的校准因数。
最后通过这些校准因数将触摸屏的对应点与实际显示的对应点完全对应起来。
误差的来源有几个误差源会影响触摸屏控制器,使之无法产生正确的对应点X和Y坐标。
最主要的误差源是电气噪声、机械误差及放大因子。
此外,操作者的误操作也会有所影响,如手指或铁笔按压时间不够长或压力不够大。
以上所有误差均会产生无用数据,必须对它进行纠正补偿才能使触摸屏正常工作。
在各种电气系统中,由热效应或电磁效应以及系统设计缺陷引起的电气噪声无处不在。
在触摸屏中,由于AD转换器的前端电路具有高输入阻抗,因此特别容易受到电气噪声的影响。
除了对带有触摸屏控制器的电路小心布局外,我们通常在AD转换器输入端增加低通滤波器来解决这一问题。
此外也可选择软件方法,舍弃AD转换中的最小的一、两位,并用算法将一些落在允许误差范围之外的数据点从采样流中去除。
这种软件算法也可消除由使用者产生的误差。
本文所阐述的校准方法可用来解决由于机械误差和放大因素引起的误差。
图3中的圆圈表示触摸屏下的LCD显示的图形,椭圆则表示当用户顺着LCD显示的图像画圈时,触摸屏对应点的集合,不过有所夸大。
这个重建的图形显然经过一系列旋转、移位和放大,而且在每个方向变换的参数不一样。
校准的重点则是将触摸屏上显示的这个重建图形经过变换,换算出与LCD显示的图形相一致的对应点集合。
校准的数学基础为了得到一个通用解决方案,我们将每个点描述为一个数学参量。
如图4所示,可将LCD显示器上的每个点当作一个矢量PD,而该点在触摸屏上对应的点则当作矢量P。
此外,我们假设一个参量M,通过这个参量可将PD与P进行换算,即PD=MP(1)这里的M是一个转换矩阵,也是我们要研究的对象。
如果能得到转换矩阵M中相关的数值,那么给定触摸屏上任一点P,我们就可换算出它在LCD显示器上的对应点PD。
现在假设LCD显示器上的任一点都与触摸屏上的某点相对应,但要经过旋转、移位和放大处理。
屏幕校准算法
1.两点校准法:
关系:
X = k1* x + datx;
Y = k2* y + daty;
其中X,Y是屏的物理坐标(液晶屏的坐标),x,y是屏逻辑坐标(触屏的坐标)k1,k2为x,y方向的比例因子,datx,daty为x,y方向的迁移量.四个未知数我们就需要四个方程(其实是两组独立的方程),所以我们就在液晶屏指定的物理坐标(X,Y)位置显示我们校准符号然后通过点击触屏读出x,y带入上面的式子求出k1,k2,datx,daty,以后就通过上面的关系将物理坐标和逻辑坐标联系起来了,但是我们在装屏的时候物理坐标和逻辑坐标不仅仅是水平或者垂直上面的偏差还有角度上面的偏差(就是物理坐标系的x轴和逻辑坐标的y轴不是垂直的),那么上面的方程就不实用了,为解决这个问题就诞生了三点校准法。
2.三点校准法:
关系:
X = k1* x + k3*y+datx;
Y = k2* y +k4*x+ daty;
其中k1,k2,datx,daty,,与上面的意义相同,k3,k4就是角度偏差带来的比例系数,按照上面方法一样设置物理坐标(X,Y)液晶显示校准点,读出逻辑坐标x,y带入方程解出k1,k2,k3,k4,datx,daty这儿必须用三个点才能够解出来所以叫三点校准法。
注意:在实现的时候校准点范围别太小了。
Ps:新手总结比较低端的东西。
Android平板电脑操作手册
Android平板电脑操作手册注意:不同Android平板电脑操作界面会有所不同,但基本元素和操作方法是类似的,该操作手册仅提供一种界面下的操作介绍,当操作不同的Android平板电脑时,该手册都可作为参考。
1. 基本设置设置:点击菜单页面中的设置图标进入设置界面。
1.1 无线控制•管理WIFI设置,进行无线网络连接1• Wi-Fi :打开/关闭 Wi-Fi-- Wi-Fi 提示“打开WI-FI ”时,右侧图标显示为”“,表示WIFI 处于关闭状态。
-- 单击”Wi-Fi “,状态提示”正在打开… “,右侧图标显示为”“,表示WIFI 处于打开状态。
• Wi-Fi 设置 :设置和管理无线接入点-- 网络通知右侧图标显示为”“,表示自动扫描处于关闭状态。
-- 单击”网络通知“,右侧图标显示为”“,表示扫描处于打开状态,设备将自动搜索添加附近可连接的WiFi网络,点击无线网络端,即可连接至网络。
连接成功后,在WIFI设置图标下显示为“已连接至…”,表示已连接上网络。
1.2 声音和显示•设置铃声、通知和屏幕亮度• 静音模式:除媒体和闹钟之外的所有声音都被静音。
•扬声器模式:使用扬声器。
•响铃音量:设置通知音的大小。
•媒体音量:调整媒体音量。
在横条上左右移动点击可调节媒体音量设置。
•通知铃声:设置默认的通知铃声。
•操作音选择:进行屏幕选择时发出声音。
• SD卡通知:禁用SD卡通知声音。
23• 方向:旋转MID 时自动改变方向 • 动画:打开和关闭窗口时显示动画• 亮度:调整屏幕亮度。
在横条上左右移动点击可调节亮度设置• 屏幕待机:在屏幕自动关闭前调整延迟。
有15秒、30秒、1分钟、2分钟、10分钟、从不待机六种时间选项可选择1.3 安全性和位置 • 设置我的位置、密码选项• 使用无线网络:通过无线网络查看应用程序(例如Google 地图)中的位置 • 可见的密码:键入时显示密码1.4 应用程序 • 管理应用程序,设置快速启动快捷键4• 未知源:选择是否允许安装非市场应用程序 • 快速启动:设置启动应用程序的键盘快捷键 • 管理应用程序:管理和删除安装的应用程序 • 开发:设置应用程序的开发选项1.5 SD 卡和MID 存储 • 卸下SD 卡,查看可用的存储空间5【注】:请通过选项中的“删除SD 卡”以安全移除 SD 卡,避免热拔插造成对设备的损坏。
android实现触摸屏校准
android实现触摸屏校准并根据读取到事件类型的不同分成三类(KEYBOARD、TOUCHSCREEN、TRACKBALL),分别进行处理,例如键盘事件会调用dispatchKey((KeyEvent)ev.event, 0, 0)以将事件通过Binder发送给具有焦点的窗口应用程序,然后调用mQueue.recycleEvent(ev)继续等侍键盘事件的发生;如果是触摸屏事件则调用dispatchPointer(ev,(MotionEvent)ev.event, 0, 0),这里会根据事件的种类(UP、DOWN、MOVE、OUT_SIDE等)进行判断并处理,比如Cancel或将事件发送到具有权限的指定的窗口中去;3.移植方案a.Android本身并不带触摸屏校准。
Android获取到的数据就是驱动上报的原始数据。
b.方案一: 移植TSLIB,通过TSLIB产生pointercal 校准参数文件。
c.方案二: 从Android框架层获取OnTouch事件产生pointercal 校准参数文件d.方案一: 数据的校准在驱动中完成。
即把pointercal 的参数数据通过某种方式(sysfs)传递给驱动程序进行校准。
e.方案二: 驱动上报原始点,原始点在框架层拦截后进行校验处理。
4.TSLIB移植过程a.修改源码以适应android的文件结构。
b.设定Android.mk 编译选项,生成库即应用。
i.etc/ts.conf module_raw inputii.src/ts_config.c #define TS_CONF "/system/etc/ts.conf"iii.src/ts_load_module.cchar *plugin_directory="/system/lib/ts/plugins/";iv.tests/fbutils.cchar *defaultfbdevice = "/dev/graphics/fb0";v.COPY ts.conf 到/system/etc/ts.confvi.init.rc. mkdir /data/etc/pointercalvii.通过ts_calibrate 产生pointercal 数据文件。
触摸屏校正原理和方法
触摸屏校正原理和方法张开俊2011.6.10不同于鼠标,触控板的相对坐标定位,触摸屏是绝对坐标系定位,其物理坐标需要和LCD屏上的坐标一一对应。
所以在触摸屏原厂生产出货前,以及我们产品在产线组装前,都需要通过特定的软件或整机系统软件进行校正。
1.触摸屏为什么需要校正触摸屏与LCD显示屏是两个不同的物理器件。
LCD处理的像素,例如我们通常所说的分辨率是600x800,实际就是指每行的宽度是600个像素,高度是800个像素,而触摸屏处理的数据是点的物理坐标,该坐标是通过触摸屏控制器采集到的。
两者之间需要一定的转换。
其次,在安装触摸屏时,不可避免的存在着一定的误差,如旋转,平移的,这同样需要校正解决。
再次,电阻式触摸屏的材料本身有差异而且随着时间的推移,其参数也会有所变化,因此需要经常性的校正(电容式触摸屏只需要一次校正即可,这是由两者不同的材料原理造成的,具体可参阅有关电阻式和电容式触摸屏对比的文章)2.如何校正触摸屏的校正过程一般为:依次在屏幕的几个不同位置显示某种标记(如"+"), 用触摸笔点击这些标记,完成校正。
如果P T(x, y)表示触摸屏上的一个点, P L(x, y)表示LCD上的一个点,校正的结果就是得到一个转换矩阵M, 使P L(x, y) = M·P T(x, y)。
3.校正原理我们知道二维几何变换包含三种平移、旋转和缩放。
这三者的矩阵表示为:平移M T:缩放M S:旋转M R:所以P L =M R·M T·M S·P T,将这个公式展开,其结果为:在上面的公式中,LCD上的坐标(X L 、Y L)和触摸屏上的坐标(X T 、Y T)是已知的,而其他的则是我们需要求的:θ, S Y, S X, T Y, S X共有5个变量,至少需要五个方程,因为每组点坐标(P L, P T)可以得到两个方程,因此我们需要采集三组点坐标。
android手势操作滑动效果触摸屏事件处理
android手势操作滑动效果触摸屏事件处理精品文章学分+5很多时候,利用触摸屏的Fling、Scroll等Gesture(手势)操作来操作会使得应用程序的用户体验大大提升,比如用Scroll手势在浏览器中滚屏,用Fling在阅读器中翻页等。
在Android系统中,手势的识别是通过GestureDetector.OnGestureListener接口来实现的,不过William翻遍了Android的官方文档也没有找到一个相关的例子,API Demo中的TouchPaint也仅仅是提到了onTouch事件的处理,没有涉及到手势。
Android Developer讨论组里也有不少人有和我类似的问题,结合他们提到的方法和我所做的实验,我将给大家简单讲述一下Android中手势识别的实现。
我们先来明确一些概念,首先,Android的事件处理机制是基于Listener(监听器)来实现的,比我们今天所说的触摸屏相关的事件,就是通过onTouchListener。
其次,所有View的子类都可以通过setOnTouchListener()、setOnKeyListener()等方法来添加对某一类事件的监听器。
第三,Listener一般会以Interface(接口)的方式来提供,其中包含一个或多个abstract(抽象)方法,我们需要实现这些方法来完成onTouch()、onKey()等等的操作。
这样,当我们给某个view设置了事件Listener,并实现了其中的抽象方法以后,程序便可以在特定的事件被dispatch到该view的时候,通过callbakc函数给予适当的响应。
看一个简单的例子,就用最简单的TextView来说明(事实上和ADT中生成的skeleton 没有什么区别)。
Java代码view plaincopy to clipboardprint?01.public class GestureTest extends Activity implements OnTouchListener{02.03.@Override04.protected void onCreate(Bundle savedInstanceState) {05.super.onCreate(savedInstanceState);06. setContentView(yout.main);07.08. // init TextView09. TextView tv = (TextView) findViewById(R.id.page);10.11. // set OnTouchListener on TextView12. tv.setOnTouchListener(this);13.14. // show some text15. tv.setText(R.string.text);16.}17.18.@Override19.public boolean onTouch(View v, MotionEvent event) {20. Toast.makeText(this, "onTouch", Toast.LENGTH_SHORT).show();21. return false;22.}public class GestureTest extends Activity implements OnTouchListener{ @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.main);// init TextViewTextView tv = (TextView) findViewById(R.id.page);// set OnTouchListener on TextViewtv.setOnTouchListener(this);// show some texttv.setText(R.string.text);}@Overridepublic boolean onTouch(View v, MotionEvent event) {Toast.makeText(this, "onTouch", Toast.LENGTH_SHORT).show();return false;}我们给TextView的实例tv设定了一个onTouchListener,因为GestureTest类实现了OnTouchListener 接口,所以简单的给一个this作为参数即可。
触摸屏校准
(1)触摸屏为什么需要校正?触摸屏与LCD显示屏是两个不同的物理器件。
LCD处理的像素,例如我们通常所说的分辨率是600x800,实际就是指每行的宽度是600个像素,高度是800个像素,而触摸屏处理的数据是点的物理坐标,该坐标是通过触摸屏控制器采集到的。
两者之间需要一定的转换。
其次,在安装触摸屏时,不可避免的存在着一定的误差,如旋转,平移的,这同样需要校正解决。
再次,电阻式触摸屏的材料本身有差异而且随着时间的推移,其参数也会有所变化,因此需要经常性的校正(电容式触摸屏只需要一次校正即可,这是由两者不同的材料原理造成的,具体可参阅有关电阻式和电容式触摸屏对比的文章)(2)如何校正?触摸屏的校正过程一般为:依次在屏幕的几个不同位置显示某种标记(如"+"), 用触摸笔点击这些标记,完成校正。
如果P T(x, y)表示触摸屏上的一个点, P L(x, y)表示LCD上的一个点,校正的结果就是得到一个转换矩阵M, 使P L(x, y) = M·P T(x, y)。
(3) 校正原理我们知道二维几何变换包含三种平移、旋转和缩放。
这三者的矩阵表示为:平移M T:缩放M S:旋转M R:所以 P L =M R·M T·M S·P T,将这个公式展开,其结果为:在上面的公式中,LCD上的坐标(X L 、Y L)和触摸屏上的坐标(X T 、Y T)是已知的,而其他的则是我们需要求的:θ, S Y, S X, T Y, S X共有5个变量,至少需要五个方程,因为每组点坐标(P L, P T)可以得到两个方程,因此我们需要采集三组点坐标。
但是上面的方程涉及三角函数,运算复杂,我们可以进一步简化为:变量虽然多了一个,但是解题过程简单多了,更适合计算机计算,而且采集点的数量仍然为3组。
假设LCD三个点的坐标为(X L1,Y L1),(X L2,Y L2),(X L2,Y L2), 对应触摸屏上的三个点是(X T1,Y T1),(X T2,Y T2)。
触摸屏为什么点不准之触摸屏校准教程
触摸屏为什么点不准之触摸屏校准教程嵌入式环境下,触摸屏是鼠标的替代也是升级输入设备,下面我们来研究一下触摸屏。
1.基础知识触摸屏的原理这里不讲,只说下大体思路,触摸屏硬件能够接收到来自用于的触摸,通过若干方式,把数据转换成坐标,此时,坐标是物理坐标,即触摸屏的坐标,而不是显示设备的坐标,显示设备的坐标由软件来定义,而触摸屏的物理坐标是固定的。
所以,当我们点击触摸屏,数据被送给驱动,驱动送给应用程序时,我们得到的数据还不是真正的显示设备数据哦,比如点击一点,硬件传来的是(189,123),(我们约定x在前),这时如果我们说,屏幕上的(189,123)点有点击,这时不正确的,这个很容易明白的,物理的点只是采样到的点,并不是真正意义上的显示设备的坐标,毕竟显示坐标由我们来定。
那么怎么办呢?~这时,需要校准触摸屏,所有的触摸屏使用前,必须要经过校准。
2.触摸屏校准原理以上说了触摸屏需要校准的原因,问题出在,物理坐标和屏幕坐标并不匹配,不匹配有两个方面:第一,物理坐标的1个单位和屏幕坐标的1个单位并不相等,我们知道屏幕坐标1个单位一般是一个像素,而物理坐标的1个单位并不是1个像素.第二,假设我们把屏幕的左上角定义为(0,0),那么触摸屏的左上角的物理坐标并不是(0,0)(我们点击之后的物理采样数据)。
综上,校准有两个方面:第一,物理采样坐标与屏幕像素坐标的对应关系,也就是伸缩系数,即单位物理采样数据代表几个单位屏幕像素数据,x坐标和y坐标各有一个伸缩系数,分别记作:xScale和yScale。
计算方法很简单,为了精确,可以采样屏幕上的四个点,让用户点击,比如(20,20),(20,200),(300, 200),(300,20),通过横着的线段除以物理采样的数据线段,得到了x的伸缩系数。
同理可以得到y的伸缩系数。
第二,物理坐标的相对于屏幕像素坐标的偏移,假如我们不计算偏移,只计算伸缩系数的话,假设用户在屏幕点(20,20)点击,我们经过转换物理采样数据,即乘上伸缩系数,发现,校准后的数据并不是(20,20)点,原因就是因为有偏移,原因是触摸屏的物理采样数据,在左上角并不是(0,0),而是某个正数对,采样到的数据不会是0的,这就是偏移产生的原因,所以,在计算过伸缩系数之后,比如点击屏幕(20,20),采样到的数据是(45,78),而第一步计算出的伸缩系数分别是0.78和0.67,那么物理坐标转换成屏幕坐标后是(45*0.78,78*0.67),此时虽然我们得到了物理坐标对应的屏幕坐标,但是现在屏幕坐标和我们(20,20)所在的屏幕坐标并不在一个坐标系,即(0,0)点不同,所以我们要减去一个坐标系偏移,假设分别是xOffset和yOffset,那么两个坐标做差便得到了xOffset和yOffset。
触屏三点校准法
触屏三点校准法
1.两点校准法:
关系:
X = k1* x + datx;
Y = k2* y + daty;
其中X,Y是屏的物理坐标(液晶屏的坐标),x,y是屏逻辑坐标(触屏的坐标)k1,k2为x,y⽅向的⽐例因⼦,datx,daty为x,y⽅向的迁移量.四个未知数我们就需要四个⽅程(其实是两组独⽴的⽅程),所以我们就在液晶屏指定的物理坐标(X,Y)位置显⽰我们校准符号然后通过点击触屏读出x,y带⼊上⾯的式⼦求出k1,k2,datx,daty,以后就通过上⾯的关系将物理坐标和逻辑坐标联系起来了,但是我们在装屏的时候物理坐标和逻辑坐标不仅仅是⽔平或者垂直上⾯的偏差还有⾓度上⾯的偏差(就是物理坐标系的x轴和逻辑坐标的y轴不是垂直的),那么上⾯的⽅程就不实⽤了,为解决这个问题就诞⽣了三点校准法。
2.三点校准法:
关系:
X = k1* x + k3*y+datx;
Y = k2* y +k4*x+ daty;
其中k1,k2,datx,daty,,与上⾯的意义相同,k3,k4就是⾓度偏差带来的⽐例系数,按照上⾯⽅法⼀样设置物理坐标(X,Y)液晶显⽰校准点,然后通过点击校准点读出逻辑坐标x,y带⼊⽅程解出k1,k2,k3,k4,datx,daty这⼉必须⽤三个点才能够解出来所以叫三点校准法。
台达触摸屏校准方法
台达触摸屏校准方法
嘿,朋友们!今天咱就来讲讲台达触摸屏校准那点事儿。
你说这触摸屏啊,就像我们的手机屏幕一样,用久了可能就没那么准啦,就得校准一下,不然点这里它跑那里去了,多烦人呐!
咱先找到校准的入口,一般就在设置里面嘛,就跟你找手机设置差不多。
然后呢,就会出现校准的界面啦,这时候你就像在玩一个小游戏一样。
你看啊,屏幕上会出现一个一个的小点,就好像一个个小目标,你得用你的手指去准确地点击它们。
这就好像打靶一样,你得瞄得准准的,才能打中靶心呀!要是你点歪了,那可不行哦,就跟打靶脱靶了一样。
这时候你可别着急,慢慢来,一个一个点过去。
哎呀,你想想,要是你校准不好,以后用起来多别扭呀!就好比你走路走歪了,那能舒服吗?
校准的时候可得有点耐心呀,别嫌麻烦。
你想想,你平时用触摸屏的时候,要是不准确,那不是更麻烦嘛!所以呀,现在花点时间好好校准,以后用起来就顺畅多啦。
你说这台达触摸屏也是够厉害的,能让我们这么方便地操作各种设备。
但它也需要我们好好照顾它呀,就像我们照顾自己的宝贝一样。
等你校准完了,你就会发现,哇塞,这触摸屏用起来顺手多啦!就好像给它做了一次大保健一样,焕然一新呐!这感觉多棒呀!
反正呀,台达触摸屏校准这事儿,说难也不难,说简单也不简单。
关键是要细心,要有耐心。
别嫌我啰嗦啊,我这可都是为了你们好呀!你们要是不好好校准,以后用起来不顺手可别怪我没提醒你们哦!就这么着吧,大家赶紧去试试吧!。
华为触屏校准操作方法
华为触屏校准操作方法
华为触屏校准操作方法如下:
1. 进入手机的设置界面,找到并点击“显示”或“屏幕”选项。
2. 在屏幕设置页面中,查找并点击“高级显示”或“高级设置”选项。
3. 在高级显示或高级设置页面中,找到并点击“触摸屏幕校准”选项。
4. 进入触摸屏幕校准页面后,按照页面上的指示进行操作。
通常,校准过程会要求用户依次点击出现的一系列方块或小圆圈。
根据提示,用手指轻触屏幕上的方块或小圆圈,并保持按住几秒钟,以完成触摸屏幕的校准。
5. 完成校准后,系统会自动保存设置,并提示校准成功。
请注意,不同款式和型号的华为手机可能在设置页面的具体位置有所不同,以上操作方法仅供参考。
如果您无法找到“触摸屏幕校准”选项或无法完成校准,请参考手机的用户手册或联系华为客服寻求进一步帮助。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
* Please read
* Documentation/input/input-programming.txt for more details.
*/
staticintabs_x[3]={350,3_x,int,NULL,0);
MODULE_PARM_DESC(abs_x,"Touchscreen absolute X min, max, fuzz");
int32_t* outScancode, int32_t* outKeycode, uint32_t *outFlags,
int32_t* outValue, nsecs_t* outWhen)
JNI部分:com_android_server_KeyInputQueue.cpp.提供接口
staticJNINativeMethod gInputMethods[]={
65536
2.Android事件处理机制
a.android事件的传入是从EventHub开始的,EventHub是事件的抽象结构,维护着系统设备的运行情况(设备文件放在/dev/input里),设备类型包括Keyboard、TouchScreen、TraceBall。它在系统启动的时候会通过open_device方法将系统提供的输入设备都增加到这个抽象结构中,并维护一个所有输入设备的文件描述符,如果输入设备是键盘的话还会读取/system/usr/keylayout/目录下对应键盘设备的映射文件(修改./development/emulator/keymaps/qwerty.kl来改变键值的映射关系),另外getEvent方法是对EventHub中的设备文件描述符使用poll操作等侍驱动层事件的发生,如果发生的事件是键盘事件,则调用Map函数按照映射文件转换成相应的键值并将扫描码和键码返回给KeyInputQueue.
YL = (YT*D+YT*E+F) / Div
c.TSLIB把以上的7个参数ABCDEF Div保存在pointercal文件中。
不校准的数据:A=1, B=0, C=0, D=0, E=1, F=0, Div=1
A
B
C
D
E
F
Div
-411
37818
-3636780
-51325
39
47065584
staticintabs_y[3]={320,3750,40};
module_param_array(abs_y,int,NULL,0);
MODULE_PARM_DESC(abs_y,"Touchscreen absolute Y min, max, fuzz");
staticintabs_p[3]={0,150,4};
/*
*提供给驱动外查询input_dev的接口
* struct input_absinfo info;
* ioctl(fd, EVIOCGABS(axis), &info)
* src file: evDev.c
*/
if ((_IOC_NR(cmd) & ~ABS_MAX) == _IOC_NR(EVIOCGABS(0))) {
vi.init.rc. mkdir /data/etc/pointercal
vii.通过ts_calibrate产生pointercal数据文件。
5.框架内获取参数文件
a.制作APK应用,仿效ts_calibrate采点并计算出各参数,产生pointercal
6.框架内实现触摸屏校准
a.在InputDevive.java中拦截触摸屏原始数据
e.方案二:驱动上报原始点,原始点在框架层拦截后进行校验处理。
4.TSLIB移植过程
a.修改源码以适应android的文件结构。
b.设定Android.mk编译选项,生成库即应用。
i.etc/ts.conf module_raw input
ii.src/ts_config.c #define TS_CONF "/system/etc/ts.conf"
3.使用自定义系统属性触摸屏校准程序.apk和InputDevice.java中的输入事件的同步。
(在触摸屏校准期间inputDevice在输入事件中不能采用算法。校准程序完成有inputDevice重新启用校准算法)
4.模拟器中至今无法进入device.absX/Y != null的代码,需要了解以下inputDevice被调用的步骤。
/*
*对外接口,getEvent,
* inotify监控device_path目录,使用poll机制轮询inotify和各个输入设备的可用状态。解析事件或输入信息,放入各个传出参数中。
*/
bool EventHub::getEvent(int32_t* outDeviceId, int32_t* outType,
module_param_array(abs_p,int,NULL,0);
MODULE_PARM_DESC(abs_p,"Touchscreen absolute Pressure min, max, fuzz");
/*
*对设备进行初始化设置
*/
set_bit(EV_ABS, wm->input_dev->evbit);
触摸屏的时间流程:
驱动层:
/*
* Touchscreen absolute values
*
* These parameters are used to help the input layer discard out of
* range readings and reduce jitter etc.
*
* o min, max:- indicate the min and max values your touch screen returns
* o fuzz:- use a higher number to reduce jitter
*
* The default values correspond to Mainstone II in QVGA mode
abs_x[2], 0);
input_set_abs_params(wm->input_dev, ABS_Y, abs_y[0], abs_y[1],
abs_y[2], 0);
input_set_abs_params(wm->input_dev, ABS_PRESSURE, abs_p[0], abs_p[1],
t = _IOC_NR(cmd) & ABS_MAX;
abs.value = dev->abs[t];
abs.minimum = dev->absmin[t];
abs.maximum = dev->absmax[t];
abs.fuzz = dev->absfuzz[t];
abs.flat = dev->absflat[t];
set_bit(ABS_X, wm->input_dev->absbit);
set_bit(ABS_Y, wm->input_dev->absbit);
set_bit(ABS_PRESSURE, wm->input_dev->absbit);
input_set_abs_params(wm->input_dev, ABS_X, abs_x[0], abs_x[1],
iii.src/ts_load_module.c
char *plugin_directory="/system/lib/ts/plugins/";
iv.tests/fbutils.c
char *defaultfbdevice = "/dev/graphics/fb0";
v.COPY ts.conf到/system/etc/ts.conf
/* name, signature, funcPtr */
{"readEvent","(Landroid/view/RawInputEvent;)Z",
(void*)android_server_KeyInputQueue_readEvent},
{"getDeviceClasses","(I)I",
b.frameworks/base/services/jni/com_android_server_KeyInputQueue.cpp
根据事件的类型以及事件值进行判断处理,从而确定这个事件对应的设备状态是否发生了改变并相应的改变对这个设备的描述结构InputDevice。
c.Windowmanager会创建一个线程(InputDispatcherThread),在这个线程里从事件队列中读取发生的事件(QueuedEvent ev = mQueue.getEvent()),并根据读取到事件类型的不同分成三类(KEYBOARD、TOUCHSCREEN、TRACKBALL),分别进行处理,例如键盘事件会调用dispatchKey((KeyEvent)ev.event, 0, 0)以将事件通过Binder发送给具有焦点的窗口应用程序,然后调用mQueue.recycleEvent(ev)继续等侍键盘事件的发生;如果是触摸屏事件则调用dispatchPointer(ev, (MotionEvent)ev.event, 0, 0),这里会根据事件的种类(UP、DOWN、MOVE、OUT_SIDE等)进行判断并处理,比如Cancel或将事件发送到具有权限的指定的窗口中去;
android实现触摸屏校准
1.触摸校准算法