WEB开发网
开发学院手机开发Android 开发 在Android层实现触摸屏校验 阅读

在Android层实现触摸屏校验

 2010-05-31 14:35:00 来源:WEB开发网   
核心提示:byte[] mBuffer = new byte[64];int len = is.read(mBuffer);is.close();if (len > 0) {int i;for (i = 0 ; i < len ; i++) {if (mBuffer[i] == '' || mBuff

byte[] mBuffer = new byte[64];

int len = is.read(mBuffer);

is.close();

if (len > 0) {

int i;

for (i = 0 ; i < len ; i++) {

if (mBuffer[i] == ' ' || mBuffer[i] == 0) {

break;

}

}

len = i;

}

StringTokenizer st = new StringTokenizer( new String(mBuffer, 0, 0, len));

t = new TransformInfo ();

t.x1 = Integer.parseInt( st.nextToken() );

t.y1 = Integer.parseInt( st.nextToken() );

t.z1 = Integer.parseInt( st.nextToken() );

t.x2 = Integer.parseInt( st.nextToken() );

t.y2 = Integer.parseInt( st.nextToken() );

t.z2 = Integer.parseInt( st.nextToken() );

t.s = Integer.parseInt( st.nextToken() );

} catch (java.io.FileNotFoundException e) {

Log.i("XXW", "FileNotFound!");

} catch (java.io.IOException e) {

Log.i("XXW", "IOException");

}

tInfo = t;

Log.i("XXW","readCalibrate done!");

}

};

与上一次的那个InputDevice相比 我将读取校准文件的代码单独的变成一个函数,之所以这么做 是因为我们打算不重启就可以直接让android校准完成。这里其实也没什么东西 只是读取校验文件 如果读取成功了就用校验公式计算出校准后的坐标。为了避免重启所以用了一个系统属性ts.config.calibrate来决定重新读取一次文件。当然当ts.config.calibrate值表明正在校验的话 就直接传上来点击的原始坐标而不经过换算。校验完成之后读取一次校验文件然后将系统属性变成其他值不再读取文件。

下面我们就要写一个apk来实现校准了。

这里 我尝试了2种方法 一种是纯java的apk 一种是jni的apk。开始以为只需要java层将屏幕坐标利用公式算一下然后写一个校对文件就可以了但是事实上不是这样。tslib做的事情不仅仅是一个函数的事情还有很多对触摸屏的识别和内部校验的事情。所以基本上只有jni一种方法可行。以前这个文章写的都是java层进行校验的 其实不可。

整个apk的java代码 目前只能用来做前台的界面以及通过jni调用底层的tslib的函数。

上一页  1 2 3 4 5 6 7 8 9 10 11  下一页

Tags:Android 实现 触摸屏

编辑录入:coldstar [复制链接] [打 印]
赞助商链接