您的位置:首页 > 其它

循环注册

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;
// }
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: