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

在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]

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;

上一页  4 5 6 7 8 9 10 11 12 13  下一页

Tags:Android 实现 触摸屏

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