# 配置流程 ## 接入配置 ### 注意事项 - SDK 最低支持 Android 4.0 以上版本 API LEVEL 16。 - SDK 将以 AAR 文件的形式提供,[cepm-sdk-release.aar](#demo) 和 [sdkproject-release_enc.aar](#demo),详情请参见 [添加依赖](#yilai)。 - 提供多个入口方法,请根据业务选择 ### 准备工作 1. 向AI平台申请使用凭证 2. 需要提供使用环境的Appid、目标客户 3. LicenseID标签已废弃,无需关注 4. 使用凭证包含如下部分: - SysName:系统名称 - UserCode:用户名 - Password:密钥 - Url:AI平台服务链接 ### 添加依赖 将提供的 AAR 文件加入到 App 工程的 libs 文件夹内,并且在 build.gradle 中添加下面的配置。 ``` android{ //... repositories { flatDir { dirs 'libs' //this way we can find the .aar file in libs folder } } } //添加依赖 dependencies { //...other... //集成sdk依赖 implementation 'com.alibaba:fastjson:1.2.73' implementation 'com.squareup.okhttp3:okhttp:4.0.0' implementation files('libs/cepm-sdk-release.aar') implementation files('libs/sdkproject-release_enc.aar') } ``` # 接入示例 初始化:该步骤必须进行,否则无法调用 ``` # 项目需要增加Application类 public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); //必须执行初始化 CepmApp.init(this); } } ``` 快速调用: ``` # 在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/demo-sdk.zip) (跳转后点击查看**原始文件**) # 接口详细说明 1. [Faceid接口](#faceid) 2. [Ocr接口](#ocr) ## SDK Faceid 接口 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 | 头左转 | ## SDK Ocr 接口 SDK 代码调用的入口为 `OcrSDK` 这个类。 ``` public class OcrSDK { /** * 该类为一个单例,需要先获得单例对象再进行后续操作 */ public static OcrSDK getInstance(){ // ... } /** * 在使用SDK前先初始化, * 传入证书key `credential`, * 由 OcrLoginListener返回是否初始化SDK成功 */ public void init(Context context,Credential credential, final OcrLoginListener loginListerner){ // ... } /** * 登录成功后,调用此函数拉起sdk页面 * 打开拍摄页面,传入证件类型ocrType * * @param resultListener 返回拍摄图片的路径 */ public void startTakePhotoActivity(TakePhotoResultListener resultListener,OcrType ocrType) { // ... } /** * 登录成功后,调用此函数拉起sdk页面 * 打开身份证正面识别 * @param resultListener 用于返回识别结果 */ public void startIdCardFrontActivity(IdCardFrontResultListener resultListener) { // ... } /** * 登录成功后,调用此函数拉起sdk页面 * 打开身份证背面识别 * @param resultListener 用于返回识别结果 */ public void startIdCardBackActivity(IdCardBackResultListener resultListener) { // ... } /** * 登录成功后,调用此函数拉起sdk页面 * 打开银行卡识别 * @param resultListener 用于返回识别结果 */ public void startBankCardActivity(BankCardResultListener resultListener) { // ... } /** * 登录回调接口 */ public interface OcrLoginListener { void onLoginSuccess(); void onLoginFailed(String errorCode, String errorMsg); } /** * Ocr结果回调接口 */ public interface TakePhotoResultListener { /** * @RARAM exidCardResult SDK返回的识别结果的错误码 * @RARAM exidCardResult SDK返回的识别结果的错误信息 */ void onFailed(String errorCode, String errorMsg); void onFinish(String result); } /** * Ocr结果回调接口 */ public interface IdCardFrontResultListener { /** * @RARAM exidCardResult SDK返回的识别结果的错误码 * @RARAM exidCardResult SDK返回的识别结果的错误信息 */ void onFailed(String errorCode, String errorMsg); void onFinish(IdCardFrontData result); } /** * Ocr结果回调接口 */ public interface IdCardBackResultListener { /** * @RARAM exidCardResult SDK返回的识别结果的错误码 * @RARAM exidCardResult SDK返回的识别结果的错误信息 */ void onFailed(String errorCode, String errorMsg); void onFinish(IdCardBackData result); } /** * Ocr结果回调接口 */ public interface BankCardResultListener { /** * @RARAM exidCardResult SDK返回的识别结果的错误码 * @RARAM exidCardResult SDK返回的识别结果的错误信息 */ void onFailed(String errorCode, String errorMsg); void onFinish(BankCardData result); } ```