Android螢幕校準的apk應用實現

2021-10-03 13:10:42 字數 1382 閱讀 4157

現在我們已經知道,ts_calibrate就是取了觸控螢幕5個點的座標,然後與對應的顯示屏的點座標聯立方程,求解得到7個校準引數。

直接上原始碼過程:

新建乙個類calibrate,類方法perform_calibration()實現上述求解7個校準引數的演算法,calibrate_main()將7個校準引數生成pointercal檔案。具體實現都是從tslib原始碼目錄下tests/ts_calibrate.c中copy出來的。

display display = this.getwindowmanager().getdefaultdisplay();

point outsize = new point();

// 通過display物件獲取螢幕寬、高資料並儲存到point物件中

display.getsize(outsize);

// 從point物件中獲取寬、高

ui_screen_width = 800;

ui_screen_height = 480;

但實際情況是,獲取出來的值一直對不上,本來是解析度800 * 480,獲取的結果一直是752 * 480,查過了什麼狀態列導航欄這些,但是我用的全屏顯示,沒這兩個啊。沒搞懂,先寫死吧。

根據上面取出來的ui_screen_width 、ui_screen_height,確定了顯示屏的左上角、右上角、右下角、左下角、中間的座標。並依此實現螢幕校準的引導頁面。

x=(x-xmin)*480/(xmax-xmin) ;

y=(y-ymin)*800/(ymax-ymin);

將公式逆推下,就可以從顯示屏的座標換算成觸控螢幕的點座標了

x1 = (int)(( event.getrawx() * 4095.0 ) / (float)ui_screen_width);//4095

y1 = (int)(( event.getrawy() * 4095.0 ) / (float)ui_screen_height);//usb touch x 0x7ff

就這,肯定得不出能用的7個校準引數啊 - -||

所以,後來我又在螢幕驅動裡新增了乙個calibration_flag,用來標誌是否進行校準:

if(calibration_flag == 1)

else

在進入螢幕校準程式後,就將這個標誌位寫0;完成校準後,將標誌位寫1。

這樣我的apk才算是大功告成。附一張成果圖:

wm螢幕校準

wince的cordll提供了螢幕校準的函式,使用方法與鉤子函式類似,強制載入dll,獲取位址,然後用函式指標呼叫。typedef bool winapi touchcalibrate hinstance hinstance loadlibrary t coredll.dll if hinstanc...

Ubuntu 螢幕顏色校準

大家都知道在windows裡面可以通過顯示卡驅動對螢幕顯示顏色進行調整,並且可以用系統自帶的顏色校準工具進行伽馬值調節。那麼問題來了,在ubuntu中要怎麼調節呢。經過在網上曲折的搜尋,暫時找到了兩種調節方案 一 使用ubuntu系統設定中的color功能對顏色進行調節,因為只有幾個系統預設的顏色方...

linux螢幕擴充套件 擴充套件螢幕的校準 螢幕翻轉等

xrandr命令為螢幕擴充套件 xinput命令為輸入裝置 設定dsi 1為hdmi 1的右擴充套件 xrandr output dsi 1 right of hdmi 1 auto dsi 1為觸控螢幕且為右擴充套件,對其進行校準 xinput map to output deviceid dev...