專利名稱:一種在Android平臺下實現觸摸屏校準的方法
一種在Android平臺下實現觸摸屏校準的方法
技術領域:
本發明涉及一種電子信息技術領域,特別是涉及一種觸摸屏校準技術。背景技術:
標準的Android平臺不提供觸摸屏校準的程序,而Android框架本身大部分的操 作是通過觸摸屏操作完成的,使用Android平臺的廠商使用的硬件各不相同,但當前絕大 部分使用的觸摸屏校準方式是在Iinux內核中修改觸摸屏驅動,固定好校準參數,驅動在 上報數據時首先經過校準參數修訂后再上報。這種方式被絕大部分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設置系統屬性為完成狀態,通知應用框架新的校準參數生
3效,應用框架從文件/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個點,用戶依次單擊,此過程可以多次以便獲得 用戶的點擊習慣,同時過濾無效點,程序獲取用戶的點擊點,并取其平均值,根據算法計算 出標準參數xuxyy^bbbdiv。所述xl,x2分別代表在豎向和橫向上的X軸伸縮系數, yl,y2分別代表在豎向和橫向上的Y軸伸縮系數,zl, z2分別代表在豎向和橫向上的修正 值,div 是閾值。所述的標準算法為=Xl= (XTXXl+YTXyi+Zl)/div,YL= (YTXx2+YTXy2+z2)/ div,所述&、\是顯示屏的坐標,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_ckxl ;ts_store_ckxl};
_ATTR{brightness ;0644 ;ts_show_ckx2 ;ts_store_ckx2};_ATTR{brightness ;0644 ;ts_show_ckyl ;ts_store_ckyl};_ATTR{brightness ;0644 ;ts_show_cky2 ;ts_store_cky2};_ATTR{brightness ;0644 ;ts_show_ckzl ;ts_store_ckzl};_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 ;xl};Sysfs_write{fd_ts_chen ;yl};Sysfs_write{fd_ts_chen ;zl};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要設置系統屬性PR0P_CALIBRATE = RUNNING,通知應用框架無 須校準,直接上報原始點。一般校準程序CAPP設置應用框架中的系統屬性中的Key-Value 鍵值對,應用框架在上報原始點時首先訪問這個Key-Value鍵值對,以確定是否有要根據/ data/etc/pointercal文件的內容對點進行校準后才上報。設置系統屬性后,在屏幕上依 次畫上、下、左、右、中5個點,用戶依次單擊,此過程可以多次以便獲得用戶的點擊習慣,同 時過濾無效點,程序獲取用戶的點擊點,并取其平均值,根據算法計算出校準參數Xl,x2, Y1, y2,Z15Z2, div。所述xl,x2分別代表在豎向和橫向上的X軸伸縮系數,yl,y2分別代表在豎 向和橫向上的Y軸伸縮系數,zl, z2分別代表在豎向和橫向上的修正值,div是閾值。所述 的校準算法為=XL = (XxXXi+YxXyi+z^/div^L = (YTX x2+YTX y2+z2)/div,所述 XL、YL 是顯 示屏的坐標,XT、Yt是觸摸屏的坐標。校準程序CAPP獲取校準參數后將校準參數記錄到文
5件/data/etc/pointercal ;校準程序CAPP做完校準之后設置系統屬性為完成狀態“PR0P_ CALIBRATE = FINISHED",通知應用框架新的校準參數生效,應用框架從文件/data/etc/ pointercal更新一下校準參數,并在以后的校準部分使用此參數。應用框架代碼流程Static class transforminfo{Float xl ;Float yl ;Float zl ;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 -J/如果在校準狀態中,則非使能校準處理Bcalibrating = true ;}Else if{prop, equalsignorecase(” done“ )} {Systemproperties. set{prop_calibrate, " end" };ReadcalibrateO ;Bcalibrating = false ;}Else{Bcalibrating = false ;;//keep current tinfo status}…If (tinfo ! = null) {//r如果校準處理有效則進行校準處理Scaledx = {tinfo. xl*scaledX+tinfo. yl*scaledY+tinfo. zl}/tinfo. s ;Scaledx = {tinfo. x2*scaledX+tinfo. y2*scaledY+tinfo. z2}/tinfo. s ;…
}
…因為這種實現方法是通過屬性系統進行應用框架和應用層同步信息的,而 android的屬性系統是有權限分別的,故此需要額外在android的屬性系統實現部分進行 定制,增加應用層第三方應用可以使用的屬性。以上所述,僅為本發明較佳實施例而已,故不能依此限定本發明實施的范圍,即依 本發明專利范圍及說明書內容所作的等效變化與修飾,皆應仍屬本發明涵蓋的范圍內。
權利要求
一種在Android平臺下實現觸摸屏校準的方法,所述Android框架包括內核層、本地庫、應用框架、應用層,其特征在于所述方法包括如下步驟步驟10、所述內核層內的觸摸屏驅動提供sysfs接口文件;步驟20、所述本地庫調用所述sysfs接口文件,先通過非使能驅動校準ck_en=disable,獲得觸摸屏原始點,把觸摸屏原始點發往應用框架;步驟30、應用框架將觸摸屏原始點上報給應用層的校準程序CAPP;步驟40、校準程序CAPP通過標準算法獲得校準參數,并將所獲得的校準參數設置到驅動的sysfs接口文件;步驟50、啟動本地庫的使能驅動校準功能ck_en=enable,并退出程序。
2.根據權利要求1所述的一種在Android平臺下實現觸摸屏校準的方法,其特征在于 所述步驟40中獲得校準參數的步驟具體包括在屏幕上依次畫上、下、左、右、中5個點,用 戶依次單擊,此過程可以多次以便獲得用戶的點擊習慣,同時過濾無效點,程序獲取用戶的 點擊點,并取其平均值,根據算法計算出校準參數Xl,x2, Y1, y2, Z1, z2, div,所述xl,x2分別 代表在豎向和橫向上的X軸伸縮系數,yl,y2分別代表在豎向和橫向上的Y軸伸縮系數,zl, z2分別代表在豎向和橫向上的修正值,div是閾值。
3.根據權利要求1或2所述的一種在Android平臺下實現觸摸屏校準的方法,其特征 在于所述的標準算法為=Xl = (ΧτX Xl+YT XyAz1Vdiv, Yl = (YTXx2+YTXy2+z2)/diV,所述 XL> Yl是顯示屏的坐標,XT、Yt是觸摸屏的坐標。
4.一種在Android平臺下實現觸摸屏校準的方法,所述Android框架包括內核層、本地 庫、應用框架、應用層,其特征在于所述方法包括如下步驟步驟10、所述應用層的校準程序CAPP設置所述應用框架上的系統屬性,通知應用框架 無需校準,直接上報原始點給校準程序CAPP ;步驟20、所述校準程序CAPP根據標準算法獲得校準參數,并記錄標準參數到文件/ data/etc/pointercal ;步驟30、校準程序CAPP設置系統屬性為完成狀態,通知應用框架新的校準參數生效并 且CAPP自動關閉,應用框架從文件/data/etc/pointercal更新校準參數,并在以后的校準 部分使用此參數。
5.根據權利要求4所述的一種在Android平臺下實現觸摸屏校準的方法,其特征在于 所述獲得校準參數的步驟具體包括在屏幕上依次畫上、下、左、右、中5個點,用戶依次單 擊,此過程可以多次以便獲得用戶的點擊習慣,同時過濾無效點,程序獲取用戶的點擊點, 并取其平均值,根據算法計算出標準參數Xl,X2, I1, I2, Z1, z2, div,所述xl,x2分別代表在 豎向和橫向上的X軸伸縮系數,Il,12分別代表在豎向和橫向上的Y軸伸縮系數,zl, z2分 別代表在豎向和橫向上的修正值,div是閾值。
6.根據權利要求4或5所述的一種在Android平臺下實現觸摸屏校準的方法,其特征 在于所述的標準算法為=Xl = (ΧτX Xl+YT XyAz1Vdiv, Yl = (YTXx2+YTXy2+z2)/diV,所述 XL> Yl是顯示屏的坐標,XT、Yt是觸摸屏的坐標。
全文摘要
本發明提供一種在Android平臺下實現觸摸屏校準的方法,Android框架包括內核層、本地庫、應用框架、應用層,步驟11、觸摸屏驅動提供sysfs接口文件;12、本地庫通過非使能驅動校準獲得原始點再發往應用框架;13、應用框架將原始點上報給CAPP;14、CAPP通過標準算法獲得校準參數并設置到sysfs接口文件;15、啟動使能驅動校準再退出;方法二,步驟21、CAPP設置系統屬性通知應用框架上報原始點;22、CAPP根據標準算法獲得校準參數;23、CAPP設置系統屬性,通知應用框架新的校準參數生效,應用框架更新校準參數。本發明能夠根據不同用戶的使用體驗,動態的調整觸摸屏的校準參數。
文檔編號G06F9/445GK101980118SQ20101051764
公開日2011年2月23日 申請日期2010年10月22日 優先權日2010年10月22日
發明者何曉水, 錢光洪, 陳文耀 申請人:福建鑫諾通訊技術有限公司