# 配置流程 ## 接入配置 ### 注意事项 - 人脸核身 SDK(Faceid)最低支持到 支持 Android 4.0 以上版本 API LEVEL 16。 - 人脸核身 SDK 将以 AAR 文件的形式提供,即 faceidsdk.aar。 - 人脸核身 SDK 同时需要依赖**公共组件(cepm_common.aar)**,同样也是以 AAR 文件的形式提供,详情请参见 [添加依赖](#yilai)。 ### 添加依赖 为人脸核身 SDK 添加依赖的方式:将提供的 AAR 文件加入到 App 工程的 libs 文件夹下面,并且在 build.gradle 中添加下面的配置。 ``` android{ //... repositories { flatDir { dirs 'libs' //this way we can find the .aar file in libs folder } } } //添加依赖 dependencies { // json依赖 implementation 'com.alibaba:fastjson:1.2.73' // okHttp依赖 implementation 'com.squareup.okhttp3:okhttp:4.0.0' // 公共aar implementation(name: 'cepm_common', ext: 'aar') // 活体核身 implementation(name: 'faceidsdk', ext: 'aar') } ``` ### 权限检测 在AndroidManifest.xml中添加 ``` ``` - **Android 6.0 以上系统** SDK 需要用到网络/相机/录音/写入手机存储权限,对 Android 6.0 以上的系统会做权限的运行时检测。 - **Android 6.0 以下系统** 由于 Android 6.0 以下系统 Android 并没有运行时权限检测,建议调用方在拉起 SDK 前,对网络/相机/麦克风/写入手机存储检测。 ## 混淆配置 # 接入示例 视频核身: ``` # 在MainActivity中单击某个按钮的代码逻辑 FaceidSDK.IDCardInputData inputdata=FaceidSDK.getInstance().new IDCardInputData(name.getText().toString(),idNum.getText().toString(), videoType); Credential credential = new Credential(); credential.setSysName("XXXX").setPassword("XXXX").setUserCode("XXXX").setUrl("https://cepmtest.dhcccloud.com.cn/gateway"); FaceidSDK.getInstance().init(MainActivity.this, credential,new FaceidSDK.FaceidLoginListener() { @Override public void onLoginSuccess() { //登录成功,拉起 SDK 页面 FaceidSDK.getInstance().startActivity(MainActivity.this,inputdata, new FaceidSDK.FaceidResultListener() { @Override public void onFailed(String errorCode, String errorMsg) { txtresult.setText("失败:错误码"+errorCode+";错误信息"+errorMsg); } @Override public void onFinish(FaceidSDK.OutputData result) { txtresult.setText("操作完成:识别结果"+result.isSuccess()+";相似分数"+result.getScore()); } }); } @Override public void onLoginFailed(String errorCode, String errorMsg) { } }); ``` [完整demo下载](./demo/faceidsdkdemo.rar) (跳转后点击查看**原始文件**) # 接口详细说明 ## SDK 接口调用方法 SDK 代码调用的入口为 `FaceidSDK` 这个类。 ``` public class FaceidSDK { /** * 该类为一个单例,需要先获得单例对象再进行后续操作 */ public static FaceidSDK getInstance(){ // ... } /** * 在使用SDK前先初始化, * 传入证书key `credential`, * 由 FaceidLoginListener返回是否初始化SDK成功 */ public void init(Context context,Credential credential, FaceidLoginListener loginListerner){ // ... } /** * 初始化成功后,调用此函数拉起sdk页面。 * 传入IDCardInputData(身份证,姓名,动作类型) * 由FaceidResultListener返回人脸核身结果。 */ public void startActivity(Context context, IDCardInputData data,FaceidResultListener resultListener) { // ... } /** * 初始化成功后,调用此函数拉起sdk页面。 * 传入PhotoInputData(照片,动作类型) * 由FaceidResultListener返回人脸核身结果。 */ public void startActivity(Context context, PhotoInputData data,FaceidResultListener resultListener) { // ... } /** * 初始化回调接口 */ public interface FaceidLoginListener { void onLoginSuccess(); void onLoginFailed(String errorCode, String errorMsg); } /** * 人脸核身结果回调接口 */ public interface FaceidResultListener{ void onFailed(String errorCode, String errorMsg); void onFinish(OutputData result); } ``` `startActivity()` 的第二个参数PhotoInputData和IDCardInputData用来传递数据: ``` String name; //姓名 String idNum; //身份证 FaceidSDK.VideoType videoType;//LIP数字模式,ACTION动作模式, SILENT静默模式 DataItem photo;//照片信息 ``` > 以上参数被分别封装在 `FaceidSDK.PhotoInputData`,`FaceidSDK.IDCardInputData` 对象中。 ## 接入示例 关于接口调用的示例可参考 [接入示例](#shili) ## 接口参数说明 | IDCardInputData参数 | 说明 | 类型 | 长度(字节) | 是否必填 | | --- | --- | --- | --- | --- | | name | 核验人的姓名| String | - | 是 | | idNum | 核验人的身份证号 | String | 32 | 是 | | videoType | 人脸核身类型
动作活体:FaceidSDK.VideoType.ACTION
数字活体:FaceidSDK.VideoType.LIP
静默活体:FaceidSDK.VideoType.SILENT | FaceidSDK.VideoType | - | 是 | | PhotoInputData参数 | 说明 | 类型 | 长度(字节) | 是否必填 | | --- | --- | --- | --- | --- | | photo | 核验人的照片,DataItem属性见下表| DataItem | - | 是 | | videoType | 人脸核身类型
动作活体:FaceidSDK.VideoType.ACTION
数字活体:FaceidSDK.VideoType.LIP
静默活体:FaceidSDK.VideoType.SILENT | FaceidSDK.VideoType | - | 是 | | DataItem属性 | 说明 | 类型 | 是否必填 | | --- | --- | --- | --- | | origin | 文件类型
base64传输:self
来自文件服务器:fds (**带压缩效果,推荐使用,详见[fds使用文档](../file/文件服务器接口.md))**
链接:uri | DataItem.DataOrigin | 是 | | data | 照片内容(base64,文件服务器文件名或uri链接)| String | 是 | # 错误码 > 非0为未通过