在Android层实现触摸屏校验
2010-05-31 14:35:00 来源:WEB开发网if (perform_calibration()) {
String strPara = String.format("%d %d %d %d %d %d %d", cal.a[1], cal.a[2], cal.a[0],
cal.a[4], cal.a[5], cal.a[3], cal.a[6]);
boolean success = new File("/data/etc").mkdir();
if (!success) {
Log.i(this.toString(), "no success");
}
File desFile = new File("/data/etc/pointercal");
if (!desFile.exists())
try {
desFile.createNewFile();
} catch (IOException e1) {
e1.printStackTrace();
}
FileOutputStream fos;
try {
fos = new FileOutputStream(desFile);
byte[] buf = strPara.getBytes();
int bytesRead = buf.length;
try {
fos.write(buf, 0, bytesRead);
fos.flush();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
result = 0;
} else {
result = -1;
}
return result;
}
}
其实这个就是tslib里那个ts_calibrate.cpp的姐妹篇。重要的函数就一个perform_calibration() 。这里要注意的是 你必须首先利用get_sample读取5个点的值来初始化cal然后再调用calibrate_main来计算校验系数。而且那5个点的顺序为 左上 右上 右下 左下 中间。这4个点基本上应该在屏幕的边缘附近 否则计算出来的校验值可能不准。 利用上面的那个类 写一个apk出来跑跑看 流程应该就可以了。
package com.android.calibrate;
import com.android.calibrate.R;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
更多精彩
赞助商链接