紧跟着上一篇博文,在android内核中实现屏幕校准,这一篇博文主要做的便是将可执行文件ts_calibrate移植成android的apk应用。
现在我们已经知道,ts_calibrate就是取了触摸屏 5个点的坐标,然后与对应的显示屏的点坐标联立方程,求解得到7个校准参数。
直接上源码过程:
新建一个类Calibrate,类方法perform_calibration()实现上述求解7个校准参数的算法,calibrate_main()将7个校准参数生成pointercal文件。具体实现都是从tslib源码目录下tests/ts_calibrate.c中copy出来的。
然后就是画一个校准页面引导点击屏幕的操作,依次取得5个点的坐标。
先在校准页面TSCalibrateActivity里获取一下屏幕的相关参数:
Display display = this.getWindowManager().getDefaultDisplay();
Point outSize = new Point();
// 通过Display对象获取屏幕宽、高数据并保存到Point对象中
display.getSize(outSize);
// 从Point对象中获取宽、高
UI_SCREEN_WIDTH = 800;//outSize.x;
UI_SCREEN_HEIGHT = 480;//outSize.y;
但实际情况是,获取出来的值一直对不上,本来是分辨率800 * 480,获取的结果一直是752 * 480,查过了什么状态栏导航栏这些,但是我用的全屏显示,没这两个啊。没搞懂,先写死吧。
根据上面取出来的UI_SCREEN_WIDTH 、UI_SCREE