Android中加入名片扫描功能实例代码

2019-12-10 18:53:39王旭

如果已经验证就进行拍照,如果还没有验证,就验证

authenticateAccount方法

/**
* 验证账户
*/
private void authenticateAccount() {
if (!isInit) {
server.auth(KEY, SECRET, PUID, new MkxBackAuth() {
@Override
public void onBack(int code, String errInfo) {
if (code == MkxErrorCode.CODE_SUCCESS) {
isInit = server.isAuth();
if (isInit) {
Log.i(TAG, "验证成功!");
takepic();
} else {
Log.i(TAG, "验证失败!");
finish();
}
} else {
Log.i(TAG, errInfo);
finish();
}
}
});
}
}

拍照功能

/**
* 拍照操作
*/
private void takepic() {
if (isInit) {
server.setUploadListener(new MkxBackUpload() {
@Override
public void onBack(int code, String errInfo, String uuid,
int status) {
Log.i(TAG, uuid);
muuid = uuid;
switch (status) {
case STATUS_ERROR:// 上传出错
if (uploadTimes <= 5) {// 由于重新上传与拍照上传都是调用统一上传函数,因此需要限制重传次数,避免上传图片时产生无限递归
uploadTimes++;
server.uploadImage(uuid);// 重新上传
} else {// 重新上传的次数达到上限时,不再上传,保存不能上传图片的uuid
uploadTimes = 0;
upLoadFails.add(uuid);
Log.i(TAG, "上传失败,等待网络通畅时再重新上传");
}
break;
case STATUS_START:// 开始上传
break;
case STATUS_SUCESS:// 上传成功
server.getDataWithUUID(new String[] { uuid },
new MkxBackCards() {
@Override
public void onBack(int code, String cards,
MkxCard[] arg2) {
// TODO Auto-generated method stub
if (code == MkxErrorCode.CODE_SUCCESS) {
if (isInit) {                            //上传成功则进入名片页面
Intent intent = new Intent(
MaketionActivity.this,
CardDetailActivity.class);
intent.putExtra("uuid", muuid);
startActivity(intent);
} else {
Log.i(TAG, "还未验证账户");
}
}
}
});
Log.i(TAG, "上传成功");
break;
}
}
});
Intent intent = new Intent(this, MkxActivityCamera.class);
startActivity(intent);
} else {
Log.i(TAG, "还未验证账户,请验证账户再获取数据");
finish();
}
}