首页> 中国专利> 一种在Android平台下实现触摸屏校准的方法

一种在Android平台下实现触摸屏校准的方法

摘要

本发明提供一种在Android平台下实现触摸屏校准的方法,Android框架包括内核层、本地库、应用框架、应用层,步骤:11、触摸屏驱动提供sysfs接口文件;12、本地库通过非使能驱动校准获得原始点再发往应用框架;13、应用框架将原始点上报给CAPP;14、CAPP通过标准算法获得校准参数并设置到sysfs接口文件;15、启动使能驱动校准再退出;方法二,步骤:21、CAPP设置系统属性通知应用框架上报原始点;22、CAPP根据标准算法获得校准参数;23、CAPP设置系统属性,通知应用框架新的校准参数生效,应用框架更新校准参数。本发明能够根据不同用户的使用体验,动态的调整触摸屏的校准参数。

著录项

  • 公开/公告号CN101980118A

    专利类型发明专利

  • 公开/公告日2011-02-23

    原文格式PDF

  • 申请/专利权人 福建鑫诺通讯技术有限公司;

    申请/专利号CN201010517644.X

  • 发明设计人 何晓水;钱光洪;陈文耀;

    申请日2010-10-22

  • 分类号G06F3/041(20060101);G06F9/445(20060101);

  • 代理机构福州市鼓楼区京华专利事务所(普通合伙);

  • 代理人翁素华

  • 地址 350000 福建省福州市鼓楼区软件大道89号

  • 入库时间 2023-12-18 01:52:15

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-10-18

    未缴年费专利权终止 IPC(主分类):G06F3/041 授权公告日:20120704 终止日期:20181022 申请日:20101022

    专利权的终止

  • 2016-05-18

    专利权质押合同登记的注销 IPC(主分类):G06F3/041 授权公告日:20120704 登记号:2015350000009 出质人:福建鑫诺通讯技术有限公司 质权人:福建海峡银行股份有限公司福州科技支行 解除日:20160420 申请日:20101022

    专利权质押合同登记的生效、变更及注销

  • 2015-04-22

    专利权质押合同登记的注销 IPC(主分类):G06F3/041 授权公告日:20120704 登记号:2013350000034 出质人:福建鑫诺通讯技术有限公司 质权人:福建海峡银行股份有限公司福州科技支行 解除日:20150210 申请日:20101022

    专利权质押合同登记的生效、变更及注销

  • 2013-12-04

    专利权质押合同登记的生效 IPC(主分类):G06F3/041 登记号:2013350000034 登记生效日:20131011 出质人:福建鑫诺通讯技术有限公司 质权人:福建海峡银行股份有限公司福州科技支行 发明名称:一种在Android平台下实现触摸屏校准的方法 授权公告日:20120704 申请日:20101022

    专利权质押合同登记的生效、变更及注销

  • 2012-07-04

    授权

    授权

  • 2011-04-06

    实质审查的生效 IPC(主分类):G06F3/041 申请日:20101022

    实质审查的生效

  • 2011-02-23

    公开

    公开

查看全部

说明书

【技术领域】

本发明涉及一种电子信息技术领域,特别是涉及一种触摸屏校准技术。

【背景技术】

标准的Android平台不提供触摸屏校准的程序,而Android框架本身大部分的操作是通过触摸屏操作完成的,使用Android平台的厂商使用的硬件各不相同,但当前绝大部分使用的触摸屏校准方式是在linux内核中修改触摸屏驱动,固定好校准参数,驱动在上报数据时首先经过校准参数修订后再上报。这种方式被绝大部分Android手机厂商采用,因为硬件选型稳定而且工艺水平较高,采用在驱动层就确定好校准参数即可以实现校准功能。

但对于大部分的行业终端产品及其制造厂商,触摸屏硬件选型经常要改变,而且由于制作工艺的缺陷,采用在驱动中固定校准参数不太合适。而且不同的用户使用的点击习惯是不同的,故此需要一种方案能够根绝各台终端的当前状态或者不同用户的使用体验可以动态的调整校准参数。

【发明内容】

本发明要解决的技术问题,在于提供一种在Android平台下实现触摸屏校准的方法,它能够根据各台终端的当前状态或不同用户的使用体验,动态的调整触摸屏的校准参数。

本发明是这样实现的:

一种在Android平台下实现触摸屏校准的方法,所述Android框架包括内核层、本地库、应用框架、应用层,它具体包括如下步骤:

步骤10、所述内核层内的触摸屏驱动提供sysfs接口文件;

步骤20、所述本地库调用所述sysfs接口文件,先通过非使能驱动校准ck_en=disable,获得触摸屏原始点,把触摸屏原始点发往应用框架;

步骤30、应用框架将触摸屏原始点上报给应用层的校准程序CAPP;

步骤40、校准程序CAPP通过标准算法获得校准参数,并将所获得的校准参数设置到驱动的sysfs接口文件;

步骤50、启动本地库的使能驱动校准功能ck_en=enable,并程序退出。

一种在Android平台下实现触摸屏校准的方法,所述Android框架包括内核层、本地库、应用框架、应用层,它具体包括如下步骤:

步骤10、所述应用层的校准程序CAPP设置所述应用框架上的系统属性,通知应用框架无需校准,直接上报原始点给校准程序CAPP;

步骤20、所述校准程序CAPP根据标准算法获得校准参数,并记录标准参数到文件/data/etc/pointercal;

步骤30、校准程序CAPP设置系统属性为完成状态,通知应用框架新的校准参数生效,应用框架从文件/data/etc/pointercal更新校准参数,并在以后的校准部分使用此参数。

本发明具有如下优点:

本发明通过实现一个触摸屏的校准应用程序CAPP,让用户根据自己的习惯在触摸屏上多次选点,程序根绝选点情况可以基本确认用户的选点习惯,同时根据与屏幕的对应计算出校准参数。根据这个校准参数,通过触摸屏驱动和框架层两种方式来达到对触摸屏原始点的校准,它能够根据各台终端的当前状态或不同用户的使用体验动态的调整触摸屏的校准参数。

【附图说明】

下面参照附图结合实施例对本发明作进一步的说明。

图1为本发明方法流程示意图。

图2为本发明另一方法的流程示意图

【具体实施方式】

参阅图1、图2对本发明实施例进行详细的说明。

如图1所示,本发明一种在Android平台下实现触摸屏校准的方法,所述Android框架包括内核层、本地库、应用框架、应用层,它具体包括如下步骤:

步骤11、所述内核层内的触摸屏驱动提供sysfs接口文件;

步骤12、所述本地库调用所述sysfs接口文件,先通过非使能驱动校准ck_en=disable,获得触摸屏原始点,把触摸屏原始点发往应用框架;

步骤13、应用框架将触摸屏原始点上报给应用层的校准程序CAPP;

步骤14、校准程序CAPP通过标准算法获得校准参数,并将所获得的校准参数设置到驱动的sysfs接口文件;

步骤15、启动本地库的使能驱动校准功能ck_en=enable,并程序退出。

由触摸屏驱动提供sysfs接口文件供校准程序CAPP调用,校准程序CAPP校准前应当先启动非使能驱动校准ck_en=disable,这样才能保证校准程序CAPP获得都是原始点,然后在屏幕上依次画上、下、左、右、中5个点,用户依次单击,此过程可以多次以便获得用户的点击习惯,同时过滤无效点,程序获取用户的点击点,并取其平均值,根据算法计算出标准参数x1,x2,y1,y2,z1,z2,div。所述x1,x2分别代表在竖向和横向上的X轴伸缩系数,y1,y2分别代表在竖向和横向上的Y轴伸缩系数,z1,z2分别代表在竖向和横向上的修正值,div是阈值。所述的标准算法为:XL=(XT×x1+YT×y1+z1)/div,YL=(YT×x2+YT×y2+z2)/div,所述XL、YL是显示屏的坐标,XT、YT是触摸屏的坐标。将经过校准算法后获得的校准参数设置到驱动的sysfs接口文件中,然后启用使能驱动校准ck_en=enable的功能并退出,这样就可以保证其他应用程序获得的是校准后的点击点。

驱动提供SYSFS接口:

Static struct device_attribute ts_calibrate{

_ATTR{brightness;0644;ts_show_cken;ts_store_cken};

_ATTR{brightness;0644;ts_show_ckx1;ts_store_ckx1};

_ATTR{brightness;0644;ts_show_ckx2;ts_store_ckx2};

_ATTR{brightness;0644;ts_show_cky1;ts_store_cky1};

_ATTR{brightness;0644;ts_show_cky2;ts_store_cky2};

_ATTR{brightness;0644;ts_show_ckz1;ts_store_ckz1};

_ATTR{brightness;0644;ts_show_ckz2;ts_store_ckz2};

_ATTR{brightness;0644;ts_show_ckdiv;ts_store_ckdiv};

_ATTR_NULL;

}

应用层实现调用流程:

Sysfs_write(fd_ts_chen;0)://disable calibrate...//触摸屏校准部分

//把校准参数写入驱动sysfs接口文件

Sysfs_write{fd_ts_chen;x1};

Sysfs_write{fd_ts_chen;y1};

Sysfs_write{fd_ts_chen;z1};

Sysfs_write{fd_ts_chen;x2};

Sysfs_write{fd_ts_chen;y2};

Sysfs_write{fd_ts_chen;z2};

Sysfs_write{fd_ts_chen;div};

Sysfs_write{fd_ts_chen;0};//enable calibrate

如图2所示,另一种在Android平台下实现触摸屏校准的方法,所述Android框架包括内核层、本地库、应用框架、应用层,它包括如下步骤:步骤21、所述应用层的校准程序CAPP设置所述应用框架上的系统属性,通知应用框架无需校准,直接上报原始点给校准程序CAPP;步骤22、所述校准程序CAPP根据标准算法获得校准参数,并记录标准参数到文件/data/etc/pointercal;步骤23、校准程序CAPP设置系统属性为完成状态,通知应用框架新的校准参数生效,应用框架从文件/data/etc/pointercal更新校准参数,并在以后的校准部分使用此参数。

正常情况下,驱动都是上报原始点,当没有开启CAPP应用时,应用框架从上次的/data/etc/pointercal文件中获得校准参数一次,以后所有的触摸屏点击数据都要经过应用框架的校准参数校准后再上报给应用层,而当校准程序CAPP要执行时,校准程序CAPP需要的是原始点,故此CAPP要设置系统属性PROP_CALIBRATE=RUNNING,通知应用框架无须校准,直接上报原始点。一般校准程序CAPP设置应用框架中的系统属性中的Key-Value键值对,应用框架在上报原始点时首先访问这个Key-Value键值对,以确定是否有要根据/data/etc/pointercal文件的内容对点进行校准后才上报。设置系统属性后,在屏幕上依次画上、下、左、右、中5个点,用户依次单击,此过程可以多次以便获得用户的点击习惯,同时过滤无效点,程序获取用户的点击点,并取其平均值,根据算法计算出校准参数x1,x2,y1,y2,z1,z2,div。所述x1,x2分别代表在竖向和横向上的X轴伸缩系数,y1,y2分别代表在竖向和横向上的Y轴伸缩系数,z1,z2分别代表在竖向和横向上的修正值,div是阈值。所述的校准算法为:XL=(XT×x1+YT×y1+z1)/div,YL=(YT×x2+YT×y2+z2)/div,所述XL、YL是显示屏的坐标,XT、YT是触摸屏的坐标。校准程序CAPP获取校准参数后将校准参数记录到文件/data/etc/pointercal;校准程序CAPP做完校准之后设置系统属性为完成状态“PROP_CALIBRATE=FINISHED″,通知应用框架新的校准参数生效,应用框架从文件/data/etc/pointercal更新一下校准参数,并在以后的校准部分使用此参数。

应用框架代码流程:

Static class transforminfo{

     Float x1;

     Float y1;

     Float z1;

     Float x2;

     Float y2;

     Float z2;

     Float s;

};

Static transforminfo tinfo;

Static final string calibration_file=″/data/etc/pointercal″;

Static final string prop_calibrate=″app.cablibrate.prop″;

在处理驱动上报的原始点的时候

首先确定是否在校准状态中

String prop=systemproperties.get{prop_calibrate;″noset″};

//log.i(logtag;″----->″+prop);

If{prop.equalsignorecase(″start″)}{

   Tinfo=null;//如果在校准状态中,则非使能校准处理

   Bcalibrating=true;

  }

Else if{prop.equalsignorecase(″done″)}{

   Systemproperties.set{prop_calibrate,″end″};

   Readcalibrate();

   Bcalibrating=false;

}

Else{

   Bcalibrating=false;

   ;//keep current tinfo status

}

If(tinfo!=null){//r如果校准处理有效则进行校准处理

Scaledx={tinfo.x1*scaledX+tinfo.y1*scaledY+tinfo.z1}/tinfo.s;

Scaledx={tinfo.x2*scaledX+tinfo.y2*scaledY+tinfo.z2}/tinfo.s;

}

因为这种实现方法是通过属性系统进行应用框架和应用层同步信息的,而android的属性系统是有权限分别的,故此需要额外在android的属性系统实现部分进行定制,增加应用层第三方应用可以使用的属性。

以上所述,仅为本发明较佳实施例而已,故不能依此限定本发明实施的范围,即依本发明专利范围及说明书内容所作的等效变化与修饰,皆应仍属本发明涵盖的范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号