基于虹软人证核验 2.0 Android SDK开发集成入门
一、功能介绍
虹软人证核验 2.0 SDK(以下简称SDK)包含人脸检测、人脸跟踪、人证核验等能力,主要实现人证的1:1比对。
其中暴露对外的功能方法有:
active 引擎激活
init 引擎初始化
inputIdCardData 输入身份证图片进行人脸检测
onPreviewData 输入视频或图片数据进行人脸检测
compareFeature 人证特征比对
getVersion 获取sdk版本信息
unInit 销毁引擎
二、获取SDK
1. 进入SDK的申请地址
https://ai.arcsoft.com.cn/product/verification.html
2. 填写信息申请并提交
申请通过后即可下载SDK,查看APP_ID和SDK_KEY
三、使用SDK
1. 创建工程,并将下载解压出的jar和so添加到工程

2. 激活引擎
//激活方法首次调用有网络和文件操作,后续只有文件操作,建议不要放在主线程中进行
int activeCode = IdCardVerifyManager.getInstance().active(MainActivity.this, Constants.APP_ID, Constants.SDK_KEY);
if (activeCode == IdCardVerifyError.OK || activeCode == IdCardVerifyError.MERR_ASF_ALREADY_ACTIVATED) {
//激活成功或者已激活过的情况
} else {
//激活失败的情况
}
3. 创建人脸特征提取结果回调对象
//需要注意回调的结果位于子线程,compareFeature接口需要在主线程中调用
private IdCardVerifyListener idCardVerifyListener = new IdCardVerifyListener() {
@Override
public void onPreviewResult(DetectFaceResult detectFaceResult, byte[] bytes, int i, int i1) {
runOnUiThread(() -> {
if (detectFaceResult.getErrCode() == IdCardVerifyError.OK) {
//预览人脸特征提取成功, 若身份证人脸特征提取也成功,则可调用人证特征比对接口进行人证比对
}
});
} @Override
public void onIdCardResult(DetectFaceResult detectFaceResult, byte[] bytes, int i, int i1) {
runOnUiThread(() -> {
if (detectFaceResult.getErrCode() == IdCardVerifyError.OK) {
//身份证人脸特征提取成功, 若预览人脸特征提取也成功,则可调用人证特征比对接口进行人证比对
}
});
}
};
4. 初始化引擎,推荐在onCreate中执行
int initCode = IdCardVerifyManager.getInstance().init(MainActivity.this, idCardVerifyListener);
if (initCode != IdCardVerifyError.OK) {
//初始化成功
} else {
//初始化失败
}
5. 传入身份证图像数据
//需要转化为nv21格式的数据,且需保证宽为4的倍数,高为2的倍数
DetectFaceResult result = IdCardVerifyManager.getInstance().inputIdCardData(nv21Data, width, height);
if (result.getErrCode() == IdCardVerifyError.OK) {
//身份证人脸检测成功
} else {
//身份证人脸检测失败
}
6. 传入预览图像数据,在传入身份证图像数据后才会进行预览图像数据的特征提取
//需要转化为nv21格式的数据,且需保证宽为4的倍数,高为2的倍数
DetectFaceResult result = IdCardVerifyManager.getInstance().onPreviewData(nv21Data, width, height, true);
if (result.getErrCode() == IdCardVerifyError.OK) {
//预览人脸检测成功
} else {
//预览人脸检测失败
}
7. 人证特征比对,身份证数据与预览数据都特征提取成功后调用
CompareResult compareResult = IdCardVerifyManager.getInstance().compareFeature(0.82d);
if (compareResult.getErrCode() == IdCardVerifyError.OK) {
//人证特征比对成功
} else {
//人证特征比对失败
}
8. 销毁引擎,推荐在onDestroy中执行
IdCardVerifyManager.getInstance().unInit();
四、注意事项
1. 线程安全
除了激活接口,SDK的接口都需要在主线程中进行调用,SDK内部对耗时操作进行了异步处理,不用担心主线程阻塞的问题。
2. 数据格式
SDK目前只支持NV21格式的数据,且需保证数据的宽为4的倍数,高为2的倍数。
3. 调用流程
需要注意的是,由于人脸特征提取比较耗时,所以SDK在调用inputIdCardData接口传入身份证数据后,onPreviewData接口才会进行预览数据的人脸特征提取。
4. so库名冲突
SDK与Arcface 2.0 SDK及活体检测SDK存在so库名冲突问题,无法同时使用,建议单一使用SDK实现人证核验需求,若有其他更加复杂需求,也可使用Arcface 2.0 SDK进行人证核验业务逻辑的实现。
五、SDK参考文档:
Android平台开发指南:
http://ai.arcsoft.com.cn/manual/idcard_android_guide_v2.html
API接口说明
https://ai.arcsoft.com.cn/statics/mannual/idcardveri/2.0/android/index.html
基于虹软人证核验 2.0 Android SDK开发集成入门的更多相关文章
- 虹软人脸识别ArcFace2.0 Android SDK使用教程
一.获取SDK 1.进入ArcFace2.0的申请地址 https://ai.arcsoft.com.cn/product/arcface.html 2.填写信息申请并提交 申请通过后即可下载SDK, ...
- Android SDK 开发指南
Android SDK 开发指南 视频详解 以下视频是对融云 Android SDK 开发使用的详细讲解,您可以在阅读文档时配合学习. 更多视频教程如下: CSDN 融云 Android SDK ...
- Android SDK开发与使用的那些事儿
前言 最近由于工作需要,将应用里的部分功能独立了出来,封装成 SDK 提供给合作伙伴使用.由于经验不足,网上也没多少写这方面内容的文章,遇到了不少的坑,决定记录下来. SDK 其实,刚说到要写SDK也 ...
- 蓝牙4.0——Android BLE开发官方文档翻译
ble4.0开发整理资料_百度文库 http://wenku.baidu.com/link?url=ZYix8_obOT37JUQyFv-t9Y0Sv7SPCIfmc5QwjW-aifxA8WJ4iW ...
- Android GIS开发系列-- 入门季(14)FeatureLayer之范围查询
Android GIS开发系列-- 入门季(5),这篇文章中,我们知道如何去查找要素.现在有一个需求,查找某点5000米范围的要素,那如何来做呢?首先我们需要在地图上画个5000米半径的圆,然后根据Q ...
- Android SDK 开发——发布使用踩坑之路
前言 在 Android 开发过程中,有些功能是通用的,或者是多个业务方都需要使用的. 为了统一功能逻辑及避免重复开发,因此将该功能开发成一个 SDK 是相当有必要的. 背景 刚好最近自己遇到了类似需 ...
- 配置Android SDK 开发环境(转)
1. 下载Eclipse 在前面我们配置好了JDK环境后,就可以开始配置Android的集成开发环境了,官方Google推荐的集成开发环境为Eclipse,所以我们就以Eclipse作为集成开发环境. ...
- Android SDK开发常用工具的使用及其异常处理
由于以下操作都是命令操作,所以在执行以下操作之前确保环境变量 ANDROID_HOME 指向的是正确的Android SDK的路径: 一.启动Android SDK Manager: android ...
- 25-ESP8266 SDK开发基础入门篇--控制WIFI连接路由器
https://www.cnblogs.com/yangfengwu/p/11324411.html 说个事情,现在SDK的版本已经出到3.0了,但是我还是使用2.0 如果只是为了学习研究 选择3 ...
随机推荐
- innobackup stream 压缩备份,解压后的qp文件
是用innobackup stream 压缩备份,解压后很多文件还是qp格式的压缩文件,需要再解压. 备份: [root@ ~]# /usr/bin/innobackupex --defaults-f ...
- php 网站中文简体繁体转换类
php 网站中文简体繁体转换类 <?php /* * define zh convert functions * 2017-4-28 use str_replace for speed * zh ...
- Cookie&Session与自定义session
cookie与session的区别? cookie是保存在浏览器端的键值对 session是保存在服务器端的键值对 session依赖于cookie 摘自: http://bubkoo.com/201 ...
- maven单元测试报java.lang.IllegalStateException: Failed to load ApplicationContext
报这个异常java.lang.IllegalStateException: Failed to load ApplicationContext的时候,通常是因为applicationContent.x ...
- Android灯光系统_编写HAL_lights.c【转】
本文转载自:https://blog.csdn.net/qq_33443989/article/details/77074411 1>. 编写灯光系统的HAL层 之 HAL_light.c1&l ...
- vue 弹性布局 实现长图垂直居上,短图垂直居中
vue 弹性布局 实现长图垂直居上,短图垂直居中 大致效果如下图,只考虑垂直方向.长图可以通过滚动条看,短图居中效果,布局合理 html代码(vue作用域内): <div class=" ...
- map数据结构
学习map的这种ES6新加的数据结构.在一些构建工具中是非常喜欢使用map这种数据结构来进行配置的,因为map是一种灵活,简单的适合一对一查找的数据结构.我们知道的数据结构,已经有了json和set. ...
- No mapping found for HTTP request with URI [/Portal/download] in DispatcherServlet with name 'springmvc'
本文为博主原创,未经允许不得转载: 遇到这个异常,总结一下这个问题发生的原因: 这个原因是在springmvc中在DispatcherServlet分发请求时,解析不到相应的请求路径.后台要请求的路径 ...
- maven下载jar包下载不下来的解决方法
转载请注明出处: 在eclipse中安装了maven插件,项目在运行的时候,一直通过pom.xml文件下载jar包,一直下载不下来, 在更新maven库时,如果网络问不定或者是一些自己手动安装到本地m ...
- RabbitMq的整理 exchange、route、queue关系
https://blog.csdn.net/samxx8/article/details/47417133