# 配置流程
## 接入配置
### 注意事项
- 人脸核身 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.rar) (跳转后点击查看**原始文件**)
# 接口详细说明
## 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 | 摇摇头 |