开放能力
开发平台
行业应用
生态合作
开发与教学
资讯 社区 控制台
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术
AR与VR
数据智能
场景方案
部署方案
行业应用
智能教育
智能医疗
智能零售
智能工业
企业服务
智能政务
信息服务
智能园区

Android-方案集成指南

1. 文档说明

文档名称 人脸实名认证APP5.2方案集成文档
所属平台 Android
提交日期 2022-7-22

2. 版本说明

名称 版本号
名镜方案 5.2.0
系统支持 android 4.4+

3. SDK说明

文件名称 版本号 说明
lib-logic.aar 1.0.3 名镜SDK,业务逻辑封装
faceplatform-ui.aar 5.2 人脸SDK的UI层,封装采集和活体UI等功能,以及各平台so库
lib-liantian.aar 3.5.9.4-AES 安全SDK
ocr_ui.aar 1.2.0 百度OCR身份识别库

4. Demo运行

4.1 配置包名和签名

从百度云控制台下载Demo之后,需要在build.gradle中配置好包名和签名信息。

安卓4.1.png

4.2 修改accessToken

以下两处修改为AI开放平台AK、SK获取到的access_token,正式环境需要APP服务端通过AK、SK来获取access_token,移动端测试可以链接拼接AK、SK的方式来获取access_token。【此处需要注意】 access_token存在有效期,正式环境需要APP服务端通过AK、SK来获取access_token,此处只测试使用。https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【百度云应用的AK】&client_secret=【百度云应用的SK】)。

测试实名认证,请将获取到的access_token填在如下地方:

安卓4.21.png

测试在线活体,请将获取到的access_token填在如下地方: 安卓4.22.png

5. SDK集成

首先在app工程中增加lib-liantian.aar、faceplatform-ui.aar、lib-logic.aar、ocr-ui.aar。此处需要注意,如果需要使用OCR身份证识别能力,则需要增加此ocr-ui-release.aar,如果不使用则不需要增加。在app工程的build.gradle中添加相关依赖,然后点击运行。

安卓5.png

6. 授权文件、加密文件

请将百度云控制台创建应用时获取的人脸授权文件(idl-license.face-android)、加密文件(idl-key.face-android)放置于Assets目录下。如果使用OCR身份证识别功能,请将OCR身份证识别授权文件(aip.license)也放置于Assets目录下,如下图所示。

安卓6.png

7. 人脸相关接口

7.1 初始化接口

初始化接口调用

返回值 API 描述
void init(Context context, String licenseKey, String licenseName,LogicInitCallback logicInitCallback) 人脸初始化接口

入参说明

参数 类型 说明
context Context 上下文
licenseKey String 授权Key
licenseName String 授权文件名称

onCallback回调说明

参数 类型 含义
resultCode int 错误码 1000为成功,其他为失败,详情参考resultCode错误码说明
resultMsg String 详情见resultCode错误码说明

resultCode错误码说明

resultCode resultMsg 自查方案
1000 成功
1001 License未初始化
1002 License数据解密失败
1003 Licesen数据格式错误 需要检查一下license文件内容有没有被修改过
1004 License-Key校验错误 需要检查一下工程代码初始化参数中的licenseId和申请license文件的licenseId是否匹配
1005 算法ID校验错误
1006 MD5校验错误 需要检查一下工程所使用的签名文件申请license文件的签名文件是否匹配
1007 设备ID校验错误
1008 包名(应用名校验错误) 需要检查一下工程代码中的applicationId(包名)和申请license文件的applicationId(包名)是否匹配
1009 过期时间不正确
1010 功能未授权 看下当前授权文件中是否缺少必要的采集SDK中的功能(funclist参数),例如炫瞳活体
1011 授权已过期 看下当前设备时间是否已经超过了申请授权文件的截止时间
1012 本地文件读取失败
1013 远程数据拉取失败 本地文件失败之后,会拉取远程,但是因为上面出现的原因,远程拉取仍失败,这就需要把网络关掉,重新看下错误码
1014 本地时间校验错误 看下当前设备时间是否准确,不能是已经过去的时间
2001 非法的参数
2002 内存分配失败
2003 实例对象为空
2004 模型内容为空
2005 不支持的能力类型
2006 不支持的预测库类型
2007 预测库对象创建失
2009 预测库对象初始化失败
2010 人脸能力初始化失败 排查思路:思路一、客户需确认是否只更新paddle-lite 预测库,其他暂时无更新。思路二、如果思路一不存在则无法执行其他自查,原因为接口已封装,客户无法自查
2011 能力未加载 排查思路:思路一、客户需确认SDK是否全部更新,不要存在看似一致则不更新现象。思路二、如果思路一不存在则无法执行其他自查,原因为接口已封装,客户无法自查
2012 人脸能力已加载 底层已做过滤,无需关注
2013 未授权 检查授权文件是否初始化成功,如果未初始化成功则需检查:1、授权文件是否做过修改 2、授权文件过期 3、授权文件是否存在 4、检查文件格式是否正确
2014 人脸能力运行异常
2015 不支持的图像类型
2016 图像转换失败 检查摄像头分辨率,格式要求 %2==0

7.2 人脸实名认证接口(有源)

基于姓名、身份证号、当前SDK获取的人脸图片,与公安权威数据源进行对比,并得出比对分数,并基于此进行业务判断是否为同一人。
此处最终采集到的数据经过加密处理,需要配合开放平台人脸实名认证V4接口使用,包含活体检测、质量检测、实名认证功能,可通过传入参数进行控制,如您的业务场景核心为实名认证,无需重复请求7.3活体检测接口(startFaceLiveness)。

:如果配置APP方案时,身份信息录入的方式选择【业务调用时传入身份信息】,那么通过APP服务端接口获取姓名和证件号后,将获取到的姓名和证件号赋值给name和idcard_number字段即可。

返回值 API 描述
void startFaceRecognize(Context context, Map params, LogicServiceCallbck logicServiceCallbck) 实名认证接口

入参params (HashMap类型) key值列表如下:

参数 类型 说明 必选
access_token String 需要APP服务端通过AK、SK获取,参考 https://ai.baidu.com/docs#/Auth/top 【此处需要注意】access_token存在有效期,建议每次调用接口重新获取access_token
name String 姓名(需要是 utf8 编码)
id_card_number String 身份证件号
plan_id String 在控制台配置的方案Id
verify_type int 身份证类型(默认为0)0:大陆,1:港澳,2:外国,3:定居国外的中国护照
quality_control String 质量控制参数 NONE: 不进行控制 LOW:较低的质量要求 NORMAL: 一般的质量要求 HIGH: 较高质量要求 默认为NONE
liveness_control String 活体控制参数 NONE: 不进行控制 LOW:较低的活体要求(高通过率 低攻击拒绝率) NORMAL: 一般的活体要求(平衡的攻击拒绝率, 通过率) HIGH: 较高的活体要求(高攻击拒绝率 低通过率) 默认为NORMAL

onCallback回调说明

参数 类型 含义
resultCode int 错误码 0为成功,其他为失败,详情参考resultCode错误码说明
resultMap HashMap 回调结果Map 详情见下表

resultMap key值列表说明:

Key值 类型 含义
resultMsg String 详情见resultCode错误码说明
data String 服务端返回结果json,只有错误码为0时会返回 此字段,具体内容可以参考人脸实名认证(V4)接口文档

resultCode和resultMsg说明

resultCode resultMsg 自查方案
0 成功
-101 已有采集流程运行中
-102 采集流程取消 用户点击返回键
-103 安全SDK未初始化 需要检查LH.init有没有调用,最好在application里面调用
-104 未同意隐私协议 需要检查LH.setAgreePolicy有没有调用,最好在application里面调用
-107 获取安全数据失败
-301 云端验证异常 已在logcat输出异常栈,请根据异常栈排查
-303 视频录制错误 已在logcat输出异常栈,请根据异常栈排查
-304 线程异常 已在logcat输出异常栈,请根据异常栈排查
-305 线筛选图片异常 已在logcat输出异常栈,请根据异常栈排查
-306 采集前内部异常 已在logcat输出异常栈,请根据异常栈排查
-307 活体验证步骤异常 已在logcat输出异常栈,请根据异常栈排查
-308 预览异常 已在logcat输出异常栈,请根据异常栈排查
-309 采集后内部异常 已在logcat输出异常栈,请根据异常栈排查
-310 摄像头调起失败 已在logcat输出异常栈,请根据异常栈排查
-401 超时,用户取消采集流程 指定时间内没有检测到人脸或没有做出相应动作
-402 炫瞳异常 炫瞳打光颜色与模型输出不匹配
-1001 网络异常
-1002 accessToken参数不合法 access_token字段未传,或者为空
-1003 姓名参数不合法 name字段未传,或者为空
-1004 证件号码参数不合法 id_card_number字段未传,或者为空

7.3 活体检测接口

包含本地活体加云端活体,本地活体分静默活体、炫瞳活体、动作活体三种,云端活体可以判断图片中的人脸是否为二次翻拍以及是否为合成图攻击。
此处最终采集到的数据经过加密处理,需要配合开放平台在线图片活体V4接口使用,实现二次验证采集图片是否存在假体攻击破绽的情况。
如您的业务场景核心为人脸实名认证,请直接请求7.2 实名认证接口

返回值 API 描述
void startFaceLiveness(Context context, Map params, LogicServiceCallbck logicServiceCallbck) 活体检测接口

入参params (HashMap类型) key值列表如下:

参数 类型 说明 必选
access_token String 需要APP服务端通过AK、SK获取access_token
注意:由于access_token存在有效期,建议每次调用接口重新获取access_token

onCallback回调说明

参数 类型 含义
resultCode int 错误码 0为成功,其他为失败,详情参考实名认证resultCode错误码说明
resultMap HashMap 回调结果Map 详情见下表

resultMap key值列表说明:

Key值 类型 含义
resultMsg String 详情见resultCode错误码说明
data String 服务端返回结果json,只有错误码为0时会返回 此字段,具体内容可以参考在线图片活体V4

7.4 人脸采集及人脸比对接口(无源)

包含本地质量和本地活体,本地质量可以确保采集到的人脸图像符合各条件校验(满足姿态角、光照、模糊度、遮挡等校验),本地活体分静默活体、炫瞳活体、动作活体三种。
此处最终采集到的数据经过加密处理,需要配合开放平台人脸对比V4接口使用,包含活体检测、质量检测、人脸1:1识别功能,可通过传入参数进行控制,如您的业务场景核心为实名认证,无需重复请求7.3活体检测接口(startFaceLiveness)。

返回值 API 描述
void startFaceCollect(Context context, LogicServiceCallbck logicServiceCallbck) 人脸采集接口

onCallback回调说明

参数 类型 含义
resultCode int 错误码 0为成功,其他为失败,详情参考实名认证resultCode错误码说明
resultMap HashMap 回调结果Map 详情见下表

resultMap key值列表说明:

Key值 类型 含义
resultMsg String 详情见resultCode错误码说明
sKey String 安全相关:sKey
xDeviceId String 安全相关:xDeviceId
data String 安全相关数据

7.5 人脸释放接口

人脸释放接口调用

返回值 API 描述
void release() 人脸释放接口

7.6 人脸相关配置

人脸相关配置来自于百度云控制台下发的console_config.json文件,详情请参考Demo的BaseFragment类中的setFaceQualityConfig()方法和setFaceLivenessConfig()方法,不设置,将使用默认值。

8. OCR身份证识别相关接口

8.1 OCR身份证识别初始化接口

返回值 API 描述
void initAccessToken(OnResultListener listener, Context context) OCR初始化接口

入参说明

参数 类型 含义
context Context 上下文

onError回调参数说明:

参数 类型 含义
errorCode int 服务端返回错误码,详情见鉴权机制接口:https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjhhu
errorMessage String 服务端返回错误信息,详情见鉴权机制接口:https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjhhu

8.2 OCR身份证识别接口

支持对二代居民身份证字段进行结构化识别,包括姓名、性别,调用参考OCR身份证识别接口文档。

返回值 API 描述
void startOcrRecognize(Context context, OcrConfig ocrConfig, OcrRecognizeCallback ocrRecognizeCallback) OCR识别接口

入参说明

参数 类型 含义
context Context 上下文
ocrConfig OcrConfig OCR配置类

OcrConfig配置字段说明

参数 类型 含义
ocrPageNavigationColor int OCR页面导航栏背景色,默认为白色
ocrPageTitleText String OCR标题内容,默认为"身份信息采集"
ocrPageTitleColor int OCR标题颜色,默认为黑色
ocrPageTopText String OCR顶部扫描文字,默认为"请将您本人的\n身份证人像面放入框内"
ocrPageTopTextColor int OCR 顶部扫描文字颜色,默认为白色

onError回调参数说明

参数 类型 含义
errorCode int 错误码 服务端返回错误码,详情见在线身份证识别接口:https://ai.baidu.com/ai-doc/OCR/rk3h7xzck
errorMessage String 回调结果Map 服务端返回错误信息,详情见在线身份证识别接口:https://ai.baidu.com/ai-doc/OCR/rk3h7xzck

9. 代码混淆

-dontwarn com.baidu.idl.**
-keep class com.baidu.idl.** { *; }
-dontwarn com.baidu.vis.**
-keep class com.baidu.vis.** { *; }
-dontwarn com.baidu.liantian.**
-keep class com.baidu.liantian.** { *; }
-dontwarn com.baidu.protect.**
-keep class com.baidu.protect.** { *; }
-dontwarn com.baidu.ocr.**
-keep class com.baidu.ocr.** { *; }

10. 权限

名称 说明 必选
需要动态申请的权限
android.permission.CAMERA 拍照权限
android.permission.RECORD_AUDIO 录音权限(录制视频)
android.permission.READ_EXTERNAL_STORAGE 读取手机外部存储权限(安全相关、OCR相关)
不需要动态申请的权限
android.permission.INTERNET 允许访问网络
android.permission.ACCESS_NETWORK_STATE 获取网络状态权限
android.permission.READ_PHONE_STATE 允许访问电话状态权限
android.hardware.camera.autofocus 允许相机对焦(OCR相关)
android.permission.GET_TASKS 允许访问当前运行的任务信息 (安全相关)

11. 不使用OCR,只使用人脸相关能力

不使用OCR,可以删除ocr-ui.aar、aip.license,以及OCR相关代码。 OCR初始化代码如下图所示:

安卓11.1.png

OCR调用代码如下图所示:

安卓11.2.png

设置页面,关闭OCR运行Demo即可。

安卓11.3.png

上一篇
方案集成前准备
下一篇
iOS-方案集成指南