# Android在线活体SDK集成帮助文档
# 1 引言
# 1.1 概述
壹证通活体检测sdk Android 版是⼀种⾯向 Android 移动设备人脸技术开发包,此版SDK包含人脸检测、活体识别等功能,以aar包(aar包中包含动态链接库)的形式发布。基于该⽅案,开发者可以轻松的构建包含人脸检测、采集和活体识别的应用
活体检测 SDK 的集成和使用请仔细阅读本⼿册,对需要特别注 意的地⽅,⼿册中将加以提醒。
# 1.2 开发平台及开发语言
开发平台:Android Studio (建议使用3.0.1以上的release版本)
开发语⾔:java
# 1.3 SDK兼容性
系统:⽀持 Android 5.0(API Level 21)及以上系统。需要开发者通过 minSdkVersion来保证⽀持系统的检测。
机型:⼿机和平板皆可
构架:⽀持 CPU架构平台【arm-v7a,arm64-v8a】
网络:⽀持 WIFI 及移动网络,移动网络⽀持使用NET 网关及 WAP 网关(CMWAP、CTWAP、UNIWAP、3GWAP)。
# 1.4 功能介绍
本地版活体检测:通过让用户做出指定人脸配合式的交互动作,识别当前操作者是否为活体,此功能为离线使用,可设定指定动作是否使用及应用顺序。动作包含:眨眼、张嘴、左摇头、右摇头、向上抬头,向下低头六个。可有效抵御⾼清图片、3D建模、视频等攻击。
本地版人脸质量检测:判断视频流中的图片帧中,哪些图片质量较佳,即人脸图像特征清晰(满⾜⻆度、姿态、光照、模糊度等校验)。
本地版人脸图像采集:通过本地SDK能⼒,采集人脸图像,同时经过人脸质量检测,确保采集到的人脸图像符合各条件校验(⻆度、姿态、光照、模糊度等),为设备前端获取有效可分析人脸的主要功能。
离线授权:SDK的授权判断,授权介质也称为license,在SDK使用中,需要通过license向授权服务器发起请求,判断SDK的使用合法性及使用有效期。
注意:license的授权文件需要您工程的applicationId(即应用包名)和应用的签名文件的MD5值。授权文件存放在assets目录下具体流程可联系壹证通商务。
# 2 SDK集成
# 2.1 SDK内容说明
1、活体检测sdk只有一个unitid-liveness-sdk-xxx.aar的aar包,该包中包含了动态链接库。开发者只需要导入该aar包即可。
2、SDK在使用之前需要向大识蛛平台提供您工程的applicationId(即应用包名)和应用的签名文件的MD5值注册您的应用。具体的注册方式,可联系商务解决。
# 2.2 SDK导入
将unitid-liveness-sdk-xxx.aar放入libs包下面 如图所示:
gradle配置如图所示:
# 3 SDK参数配置
1、授权文件idl-license.face-android放到assets目录下
2、在UnitidFaceConfig
类中配置授权文件和授权id
如下:
public class UnitidFaceConfig {
/**
* 活体检测sdk授权id
*/
public static String licenseID = "nanjingunitidcn-face-android";
/**
* 活体检测sdk的授权文件,存放在assets⽬录下名称⼀定要要⼀致
*/
public static String licenseFileName = "idl-license.face-android";
}
3、在自定义application中初始化活体检测sdk 如下:
/**
* 初始化活体检测SDK
*/
private void initLib() {
// SDK初始化
IdentityVerificationSdk.initializeSDK(this, UnitidFaceConfig.licenseID,
UnitidFaceConfig.licenseFileName,new IInitCallback() {
@Override
public void initSuccess() {
LogUtils.i(TAG, "初始化成功");
}
@Override
public void initFailure(int paramInt, String paramString) {
LogUtils.e(TAG, "初始化失败 = "+paramInt+" "+paramString);
}
});
}
4、权限声明
名称 | 用途 |
---|---|
android.permission.INTERNET | 允许应用联网,SDK联网授权。 |
android.permission.READ_PHONE_STATE | 获取用户手机的 IMEI,用来唯一的标识用户 |
android.permission.CAMERA | 允许调用相机进行拍照 |
android.hardware.camera.autofocus | 允许相机对焦 |
android.permission.WRITE_EXTERNAL_STORAGE | 图片裁剪临时存储 |
# 4 活体检测SDK调用
sdk的调用如下:
Intent intent = new Intent(this, FaceSecurityLivenessActivity.class);
intent.putExtra(FaceConstants.TOKEN, authToken);
startActivityForResult(intent, REQUEST_CODE);
参数描述
authToken
:从服务端获取到授权token,必填项。
具体的调用事例,请参考demo
流程结束后SDK会将核验的结果回调给前端,如下所示:
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if (RESULT_OK == resultCode && REQUEST_CODE == requestCode) {
if (data != null) {
int result = data.getIntExtra(FaceConstants.RESULT_CODE, -1);
String message = data.getStringExtra(FaceConstants.MESSAGE);
switch (result) {
case FaceResultCode.SUCCESS:
// 成功
ToastUtil.showBottomToast(this, "核验成功");
break;
case FaceResultCode.INVALID_TOKEN:
// ⽆效的token,需要重新获取token
ToastUtil.showBottomToast(this, "⽆效的token");
break;
case FaceResultCode.DETECT_TIME_OUT:
// 活体检测超时,可以拉起人脸采集页面进⾏重试,不需要在token有效期内不需要重新获取token
ToastUtil.showBottomToast(this, "活体检测超时");
break;
case FaceResultCode.CANCEL:
// 用户取消操作,可以拉起人脸采集页面进⾏重试,不需要在token有效期内不需要重新获取token
ToastUtil.showBottomToast(this, "用户取消操作");
break;
case FaceResultCode.FACE_VERIFY_FAILURE:
// 人脸验证失败,如果需要重试,需要重新获取token拉起人脸采集页面进⾏重试
ToastUtil.showBottomToast(this, message);
break;
case FaceResultCode.FAILURE:
// 其他失败,可以拉起人脸采集页面进⾏重试,不需要在token有效期内不需要重新获取token
ToastUtil.showBottomToast(this, "其他失败");
break;
default:
break;
}
}
}
super.onActivityResult(requestCode, resultCode, data);
}
错误码描述:
FaceResultCode.SUCCESS
: 核验成功
FaceResultCode.CANCEL
:用户取消操作
FaceResultCode.INVALID_TOKEN
:无效的token
FaceResultCode.DETECT_TIME_OUT
:活体检测超时
FaceResultCode.FACE_VERIFY_FAILURE
:人像数据验证失败
FaceResultCode.FAILURE
:其他失败
# 5 活体检测sdk中关于人脸采集页面的UI自定义
# 5.1 通过配置的形式修改人脸采集页面的颜色
<!--人脸采集页面背景色-->
<color name="spider_detect_page_background">#FFFFFF</color>
<!--导航栏颜色-->
<color name="spider_navigation_bar_color">#FFFFFF</color>
<!--状态栏颜色-->
<color name="spider_status_bar_color">#FFFFFF</color>
以上是SDK中人脸采集页面的默认配色,如果您需要更改配色,直接在您的color配置文件中以同名的方式重新定义颜色即可。
# 5.2 通过配置修改人脸采集页面上的icon
人脸采集页面关闭icon,ic_face_detect_close_ext.png 宽⾼为96*96
人脸采集页面静⾳icon,ic_face_detect_disable_sound_ext.png 宽⾼为96*96
人脸采集页面开启声⾳icon,ic_face_detect_enable_sound_ext.png 宽⾼为96*96
以上是SDK中人脸采集页面中用到的默认的icon,如果您需要更改,您可以在mipmap-xxhdpi文件夹下,以同名的方式替换成您的⾃定义icon
# 6、注意事项
程序运行
debug模式下的运行也需要携带签名,也就是说在任何模式下的运行都需要携带签名文件,SDK需要对授权文件,签名文件,包名等进行合法性校验。
# 7 混淆说明
-keep class cn.unitid.liveness.** { *; }
-keep class cn.unitid.security.data.** { *; }
-keep class com.baidu.** { *; }
# 8 版权说明
版权归南京壹证通信息科技有限公司所有,未经许可禁止翻印。