循环注册
2018-01-19 15:45
141 查看
记录一段人脸注册的代码
/**
* 用于循环获取注册进度的任务线程
*/
private final class TaskProgress extends TimerTask {
private List<String> listTips = Arrays
.asList("看看屏幕", "看看我额头", "看看我左耳", "看看我轮子", "看看我眼睛");
private int index;
@Override
public void run() {
while (isGetPro) {//开启注册后 每秒获取一次进度
SystemClock.sleep(500);
//TODO:获取人脸注册进度
currPro = mSKFaceSDK.GetRegPersonProgress();
if (currPro >= 100) {//注册成功
currPro = 0;
lastPro = 0;
utils.startSpeak("恭喜你注册成功!");
//TODO:进度100即代表注册成功,此时需要获取该用户ID,用于保存名字
int faceID = mSKFaceSDK.GetRegResult();
//TODO:保存名字
mSKFaceSDK.SetName(faceID, setName);
handler.sendEmptyMessage(WHAT_OK);
break;
} else if (currPro == lastPro) {//如果进度未变,需要积累次数
count++;
if (count > 40) {//一段时间内进度未变,可以判定注册失败,例如此处设置为40s就找不到人脸就失败
//TODO:被动失败或主动终止注册都需要调用停止方法
mSKFaceSDK.StopRegPerson();
handler.sendEmptyMessage(WHAT_REG_FAIL);
utils.startSpeak("对不起,本次注册失败");
isGetPro = false;
break;
}
if (count % 8 == 0) {//例如每8s提醒一次
utils.startSpeak("我没看到人脸,你动一下位置");
SystemClock.sleep(500);
}
} else if (currPro == -1) {
handler.sendEmptyMessage(WHAT_REG_FAIL);
utils.startSpeak("对不起,本次注册失败");
isGetPro = false;
break;
} else {//进度在一直攀升
count = 0;
Log.d("*******", "进度 = " + currPro);
if (currPro > 0)
handler.sendEmptyMessage(WHAT_PRO);
// if (!isSpeaking()) {
//TODO:获取一张人脸图片,进度变化与否 来判断 该方法完成与否
mSKFaceSDK.ToRegFace();
lastPro = currPro;
//提示不断用户变换面部位置,采集面部特征越多,识别准确率越高
utils.startSpeak(listTips.get(index++ % listTips.size()));
SystemClock.sleep(1000);
//TODO:临时添加提示一次采集两次
mSKFaceSDK.ToRegFace();
lastPro = currPro;
// }
}
}
}
}
/**
* 用于循环获取注册进度的任务线程
*/
private final class TaskProgress extends TimerTask {
private List<String> listTips = Arrays
.asList("看看屏幕", "看看我额头", "看看我左耳", "看看我轮子", "看看我眼睛");
private int index;
@Override
public void run() {
while (isGetPro) {//开启注册后 每秒获取一次进度
SystemClock.sleep(500);
//TODO:获取人脸注册进度
currPro = mSKFaceSDK.GetRegPersonProgress();
if (currPro >= 100) {//注册成功
currPro = 0;
lastPro = 0;
utils.startSpeak("恭喜你注册成功!");
//TODO:进度100即代表注册成功,此时需要获取该用户ID,用于保存名字
int faceID = mSKFaceSDK.GetRegResult();
//TODO:保存名字
mSKFaceSDK.SetName(faceID, setName);
handler.sendEmptyMessage(WHAT_OK);
break;
} else if (currPro == lastPro) {//如果进度未变,需要积累次数
count++;
if (count > 40) {//一段时间内进度未变,可以判定注册失败,例如此处设置为40s就找不到人脸就失败
//TODO:被动失败或主动终止注册都需要调用停止方法
mSKFaceSDK.StopRegPerson();
handler.sendEmptyMessage(WHAT_REG_FAIL);
utils.startSpeak("对不起,本次注册失败");
isGetPro = false;
break;
}
if (count % 8 == 0) {//例如每8s提醒一次
utils.startSpeak("我没看到人脸,你动一下位置");
SystemClock.sleep(500);
}
} else if (currPro == -1) {
handler.sendEmptyMessage(WHAT_REG_FAIL);
utils.startSpeak("对不起,本次注册失败");
isGetPro = false;
break;
} else {//进度在一直攀升
count = 0;
Log.d("*******", "进度 = " + currPro);
if (currPro > 0)
handler.sendEmptyMessage(WHAT_PRO);
// if (!isSpeaking()) {
//TODO:获取一张人脸图片,进度变化与否 来判断 该方法完成与否
mSKFaceSDK.ToRegFace();
lastPro = currPro;
//提示不断用户变换面部位置,采集面部特征越多,识别准确率越高
utils.startSpeak(listTips.get(index++ % listTips.size()));
SystemClock.sleep(1000);
//TODO:临时添加提示一次采集两次
mSKFaceSDK.ToRegFace();
lastPro = currPro;
// }
}
}
}
}
相关文章推荐
- Jack's Notes12——全选、全不选、反选(循环遍历给按钮动态注册事件)
- 循环删除dom节点的字节点和已经注册的dijit组件
- AJAX循环注册客户端事件!
- 循环注册事件的几种写法
- C#循环结构应用实例-制作用户注册页面 推荐
- 天地图WEB API 循环添加标注点,注册点击事件,标注增加属性
- 注册 创建 显示 刷新窗口(注建显新),事件,消息循环,消息处理,钩子,dll钩子. (注重理解其中的逻辑关系)
- RF,SeleniumIDE使用store/while循环执行case,注册新用户
- 消息循环,注册窗口,创建窗口【图解】
- C#匿名方法之循环注册问题
- 循环注册页面事件
- javascript循环变量注册dom事件 之强大的闭包
- Zookeeper循环注册监听器
- libevent(三)事件注册与循环监听
- libevent (三) 事件注册与循环监听
- net dll 循环注册
- WinMain函数 注册窗口类 消息循环
- java循环练习:模拟注册以及登陆
- 【matlab】matlab2012a/2012b licence失效解决办法(循环注册)
- 不二极端编程之JAVA基础总结(3)[数组循环实现控制台注册登录全功能]