[已废弃,见新文档](./安卓Sdk接入文档.md) # 配置流程 ## 接入配置 ### 注意事项 - 人脸核身 SDK 最低支持 Android 4.0 以上版本 API LEVEL 16。 - 人脸核身 SDK 仅支持 armeabi-v7a - 人脸核身 SDK 将以 AAR 文件的形式提供,[faceid-release.aar](#demo) 和 [faceplatform-release.aar](#demo)。 - 人脸核身 SDK 同时需要依赖 [公共组件(common-release.aar)](#demo),同样也是以 AAR 文件的形式提供,详情请参见 [添加依赖](#yilai)。 - 提供三个入口方法,请根据业务选择 ### 配置证书和签名 1. 提供应用ID和签名文件md5码获取证书文件`idl-license.face-android`,和证书ID `LicenseID`([如何获取应用ID和签名文件md5码](https://cugeducn-my.sharepoint.com/:b:/g/personal/zhouxc_cug_edu_cn/EQA0mcJoDFhPvJmuKXIuumEBuDf-Bo9seappz2OqhW06fQ?e=ZzQoUC)),放入您的项目目录 `app\src\main\assets`。 2. app\build.gradle 内配置: ``` android { ... signingConfigs { debug { storeFile file('xxxx.jks')//申请证书时的签名文件 storePassword 'xxxx' keyAlias = 'xxxx' keyPassword 'xxxx' } } ... defaultConfig { ... ndk { abiFilters "armeabi-v7a"//sdk仅支持,大于这个范围运行,会报找不到xxx.so文件 } ... } } ``` ### 添加依赖 将提供的 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' // 公共组件 implementation(name: 'common-release', ext: 'aar') // 人脸核身 implementation(name: 'faceid-release', ext: 'aar') implementation(name: 'faceplatform-release', ext: 'aar') } ``` ### 权限检测 在AndroidManifest.xml中添加 ``` ``` - **Android 6.0 以上系统** SDK 需要用到以上权限,对 Android 6.0 以上的系统 SDK 会做权限的运行时检测。 - **Android 6.0 以下系统** -由于 Android 6.0 以下系统 Android 并没有运行时权限检测,建议调用方在拉起 SDK 前,对权限进行检测。- # 接入示例 快速调用: ``` # 在MainActivity中单击某个按钮的代码逻辑 Credential cert=new Credential(); final FaceidSDK.IDCardInputData inputdata=FaceidSDK.getInstance().new IDCardInputData("xxx","xxx"); cert.setPassword("xxxx"); cert.setUserCode("xxxx"); cert.setUrl("xxxx"); cert.setSysName("xxxx"); FaceidSDK.getInstance().init(MainActivity.this,"你的LicenseID", cert,new FaceidSDK.FaceidLoginListener() { @Override public void onLoginSuccess() { //登录成功,拉起 入口方法一 的SDK 页面, FaceidSDK.getInstance().startActivity(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和sdk下载](./demo/faceidsdkdemo.zip) (跳转后点击查看**原始文件**) # 接口详细说明 ## SDK 接口调用方法 SDK 代码调用的入口为 `FaceidSDK` 这个类。 ``` public class FaceidSDK { /** * 该类为一个单例,需要先获得单例对象再进行后续操作 */ public static FaceidSDK getInstance(){ // ... } /** * 自定义动作参数,在init执行之前设置才有效 * 设置“人脸动作范围”,“从范围中随机选取几个动作”等参数 */ public void setFaceSDKConfig(FaceSDKConfig faceSDKConfig) { // ... } /** * 在使用SDK前先初始化, * 传入证书key `credential`,证书id LicenseID * 由 FaceidLoginListener返回是否初始化SDK成功 */ public void init(Context context,String LicenseID,Credential credential, FaceidLoginListener loginListerner){ // ... } /** * 入口方法一 人脸核身 * 初始化成功后,调用此函数拉起sdk页面。 * 传入IDCardInputData(身份证,姓名) * 由FaceidResultListener返回人脸核身结果。 */ public void startActivity(IDCardInputData data,FaceidResultListener resultListener) { // ... } /** * 入口方法二 人脸比对 * 初始化成功后,调用此函数拉起sdk页面。 * 传入PhotoInputData(照片) * 由FaceidResultListener返回人脸核身结果。 */ public void startActivity(PhotoInputData data,FaceidResultListener resultListener) { // ... } /** * 入口方法三 照片采集 * 初始化成功后,调用此函数拉起sdk照片采集页面。 * 由faceDataResultListener返回照片。 */ public void startActivity(faceDataResultListener 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); } /** * 照片采集结果回调接口 */ public interface FaceDataResultListener { void onFailed(String errorCode, String errorMsg); void onFinish(OutputFaceData result); } ``` `startActivity()` 的参数PhotoInputData和IDCardInputData用来传递数据: ``` String name; //姓名 String idNum; //身份证 ---- DataItem photo;//照片信息 ``` > 以上参数被分别封装在 `FaceidSDK.PhotoInputData`,`FaceidSDK.IDCardInputData` 对象中。 ## 接入示例 关于接口调用的示例可参考 [接入示例](#shili) ## 接口参数说明 | IDCardInputData参数 | 说明 | 类型 | 长度(字节) | 是否必填 | | --- | --- | --- | --- | --- | | name | 核验人的姓名| String | - | 是 | | idNum | 核验人的身份证号 | String | 32 | 是 | | PhotoInputData参数 | 说明 | 类型 | 长度(字节) | 是否必填 | | --- | --- | --- | --- | --- | | photo | 核验人的照片,DataItem属性见下表| DataItem | - | 是 | | DataItem属性 | 说明 | 类型 | 是否必填 | | --- | --- | --- | --- | | origin | 文件类型
base64形式:self
链接形式:uri
| DataItem.DataOrigin | 是 | | data | 照片内容(base64或uri链接)| String | 是 | ## 动作参数说明 | FaceSDKConfig参数 | 说明 | 类型 | | --- | --- | --- | | actions | [动作](#dongzuo)范围
可选"eye","mouth","headRight","headLeft","headUp","headDown","yaw"
默认包含所有| List\ | | actionOrderRandom | 动作顺序是否随机,默认true | boolean | | actionNum | 随机从actions中选取几个动作,默认3 | int | ## 动作 | 参数名 | 说明 | | --- | --- | | eye | 眨眼 | | mouth | 张嘴 | | headRight | 头右转 | | headLeft | 头左转 | | headUp | 抬头 | | headDown | 点头 | | yaw | 摇摇头 |