生态文档
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

安卓Sdk接入文档.md 10KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372
  1. # 配置流程
  2. ## 接入配置
  3. ### 注意事项
  4. - SDK 最低支持 Android 4.0 以上版本 API LEVEL 16。
  5. - SDK 将以 AAR 文件的形式提供,[cepm-sdk-release.aar](#demo) 和 [sdkproject-release_enc.aar](#demo),详情请参见 [添加依赖](#yilai)。
  6. - 提供多个入口方法,请根据业务选择
  7. ### 准备工作
  8. 1. 向AI平台申请使用凭证
  9. 2. 需要提供使用环境的Appid、目标客户
  10. 3. LicenseID标签已废弃,无需关注
  11. 4. 使用凭证包含如下部分:
  12. - SysName:系统名称
  13. - UserCode:用户名
  14. - Password:密钥
  15. - Url:AI平台服务链接
  16. <span id='yilai'></span>
  17. ### 添加依赖
  18. 将提供的 AAR 文件加入到 App 工程的 libs 文件夹内,并且在 build.gradle 中添加下面的配置。
  19. ```
  20. android{
  21. //...
  22. repositories {
  23. flatDir {
  24. dirs 'libs' //this way we can find the .aar file in libs folder
  25. }
  26. }
  27. }
  28. //添加依赖
  29. dependencies {
  30. //...other...
  31. //集成sdk依赖
  32. implementation 'com.alibaba:fastjson:1.2.73'
  33. implementation 'com.squareup.okhttp3:okhttp:4.0.0'
  34. implementation files('libs/cepm-sdk-release.aar')
  35. implementation files('libs/sdkproject-release_enc.aar')
  36. }
  37. ```
  38. <span id='shili'></span>
  39. # 接入示例
  40. 初始化:该步骤必须进行,否则无法调用
  41. ```
  42. # 项目需要增加Application类
  43. public class MyApp extends Application {
  44. @Override
  45. public void onCreate() {
  46. super.onCreate();
  47. //必须执行初始化
  48. CepmApp.init(this);
  49. }
  50. }
  51. ```
  52. 快速调用:
  53. ```
  54. # 在MainActivity中单击某个按钮的代码逻辑
  55. Credential cert=new Credential();
  56. final FaceidSDK.IDCardInputData inputdata=FaceidSDK.getInstance().new IDCardInputData("xxx","xxx");
  57. cert.setPassword("xxxx");
  58. cert.setUserCode("xxxx");
  59. cert.setUrl("xxxx");
  60. cert.setSysName("xxxx");
  61. FaceidSDK.getInstance().init(MainActivity.this,"你的LicenseID", cert,new FaceidSDK.FaceidLoginListener() {
  62. @Override
  63. public void onLoginSuccess() { //登录成功,拉起 入口方法一 的SDK 页面,
  64. FaceidSDK.getInstance().startActivity(inputdata, new FaceidSDK.FaceidResultListener() {
  65. @Override
  66. public void onFailed(String errorCode, String errorMsg) {
  67. //txtresult.setText("失败:错误码"+errorCode+";错误信息"+errorMsg);
  68. }
  69. @Override
  70. public void onFinish(FaceidSDK.OutputData result) {
  71. //txtresult.setText("操作完成:识别结果"+result.isSuccess()+";相似分数"+result.getScore());
  72. }
  73. });
  74. }
  75. @Override
  76. public void onLoginFailed(String errorCode, String errorMsg) {
  77. }
  78. });
  79. ```
  80. <span id='demo'></span>
  81. [完整demo和sdk下载](./demo/demo-sdk.zip) (跳转后点击查看**原始文件**)
  82. # 接口详细说明
  83. 1. [Faceid接口](#faceid)
  84. 2. [Ocr接口](#ocr)
  85. <span id='faceid'></span>
  86. ## SDK Faceid 接口
  87. SDK 代码调用的入口为 `FaceidSDK` 这个类。
  88. ```
  89. public class FaceidSDK {
  90. /**
  91. * 该类为一个单例,需要先获得单例对象再进行后续操作
  92. */
  93. public static FaceidSDK getInstance(){
  94. // ...
  95. }
  96. /**
  97. * 自定义动作参数,在init执行之前设置才有效
  98. * 设置“人脸动作范围”,“从范围中随机选取几个动作”等参数
  99. */
  100. public void setFaceSDKConfig(FaceSDKConfig faceSDKConfig) {
  101. // ...
  102. }
  103. /**
  104. * 在使用SDK前先初始化,
  105. * 传入证书key `credential`,证书id LicenseID
  106. * 由 FaceidLoginListener返回是否初始化SDK成功
  107. */
  108. public void init(Context context,String LicenseID,Credential credential, FaceidLoginListener loginListerner){
  109. // ...
  110. }
  111. /**
  112. * 入口方法一 人脸核身
  113. * 初始化成功后,调用此函数拉起sdk页面。
  114. * 传入IDCardInputData(身份证,姓名)
  115. * 由FaceidResultListener返回人脸核身结果。
  116. */
  117. public void startActivity(IDCardInputData data,FaceidResultListener resultListener) {
  118. // ...
  119. }
  120. /**
  121. * 入口方法二 人脸比对
  122. * 初始化成功后,调用此函数拉起sdk页面。
  123. * 传入PhotoInputData(照片)
  124. * 由FaceidResultListener返回人脸核身结果。
  125. */
  126. public void startActivity(PhotoInputData data,FaceidResultListener resultListener) {
  127. // ...
  128. }
  129. /**
  130. * 入口方法三 照片采集
  131. * 初始化成功后,调用此函数拉起sdk照片采集页面。
  132. * 由faceDataResultListener返回照片。
  133. */
  134. public void startActivity(faceDataResultListener resultListener) {
  135. // ...
  136. }
  137. /**
  138. * 初始化回调接口
  139. */
  140. public interface FaceidLoginListener {
  141. void onLoginSuccess();
  142. void onLoginFailed(String errorCode, String errorMsg);
  143. }
  144. /**
  145. * 人脸核身结果回调接口
  146. */
  147. public interface FaceidResultListener{
  148. void onFailed(String errorCode, String errorMsg);
  149. void onFinish(OutputData result);
  150. }
  151. /**
  152. * 照片采集结果回调接口
  153. */
  154. public interface FaceDataResultListener {
  155. void onFailed(String errorCode, String errorMsg);
  156. void onFinish(OutputFaceData result);
  157. }
  158. ```
  159. `startActivity()` 的参数PhotoInputData和IDCardInputData用来传递数据:
  160. ```
  161. String name; //姓名
  162. String idNum; //身份证
  163. ----
  164. DataItem photo;//照片信息
  165. ```
  166. > 以上参数被分别封装在 `FaceidSDK.PhotoInputData`,`FaceidSDK.IDCardInputData` 对象中。
  167. ### 接入示例
  168. 关于接口调用的示例可参考 [接入示例](#shili)
  169. <span id='canshu'></span>
  170. ### 接口参数说明
  171. | IDCardInputData参数 | 说明 | 类型 | 长度(字节) | 是否必填 |
  172. | --- | --- | --- | --- | --- |
  173. | name | 核验人的姓名| String | - | 是 |
  174. | idNum | 核验人的身份证号 | String | 32 | 是 |
  175. | PhotoInputData参数 | 说明 | 类型 | 长度(字节) | 是否必填 |
  176. | --- | --- | --- | --- | --- |
  177. | photo | 核验人的照片,DataItem属性见下表| DataItem | - | 是 |
  178. | DataItem属性 | 说明 | 类型 | 是否必填 |
  179. | --- | --- | --- | --- |
  180. | origin | 文件类型<br/> base64形式:self<br/> 链接形式:uri <br/> | DataItem.DataOrigin | 是 |
  181. | data | 照片内容(base64或uri链接)| String | 是 |
  182. ### 动作参数说明
  183. | FaceSDKConfig参数 | 说明 | 类型 |
  184. | --- | --- | --- |
  185. | actions | [动作](#dongzuo)范围<br/> 可选"eye","mouth","headRight","headLeft","headUp","headDown","yaw"<br/>默认包含所有| List\<String\> |
  186. | actionOrderRandom | 动作顺序是否随机,默认true | boolean |
  187. | actionNum | 随机从actions中选取几个动作,默认3 | int |
  188. <span id='dongzuo'></span>
  189. ### 动作
  190. | 参数名 | 说明 |
  191. | --- | --- |
  192. | eye | 眨眼 |
  193. | mouth | 张嘴 |
  194. | headRight | 头右转 |
  195. | headLeft | 头左转 |
  196. <span id='ocr'></span>
  197. ## SDK Ocr 接口
  198. SDK 代码调用的入口为 `OcrSDK` 这个类。
  199. ```
  200. public class OcrSDK {
  201. /**
  202. * 该类为一个单例,需要先获得单例对象再进行后续操作
  203. */
  204. public static OcrSDK getInstance(){
  205. // ...
  206. }
  207. /**
  208. * 在使用SDK前先初始化,
  209. * 传入证书key `credential`,
  210. * 由 OcrLoginListener返回是否初始化SDK成功
  211. */
  212. public void init(Context context,Credential credential, final OcrLoginListener loginListerner){
  213. // ...
  214. }
  215. /**
  216. * 登录成功后,调用此函数拉起sdk页面
  217. * 打开拍摄页面,传入证件类型ocrType
  218. *
  219. * @param resultListener 返回拍摄图片的路径
  220. */
  221. public void startTakePhotoActivity(TakePhotoResultListener resultListener,OcrType ocrType) {
  222. // ...
  223. }
  224. /**
  225. * 登录成功后,调用此函数拉起sdk页面
  226. * 打开身份证正面识别
  227. * @param resultListener 用于返回识别结果
  228. */
  229. public void startIdCardFrontActivity(IdCardFrontResultListener resultListener) {
  230. // ...
  231. }
  232. /**
  233. * 登录成功后,调用此函数拉起sdk页面
  234. * 打开身份证背面识别
  235. * @param resultListener 用于返回识别结果
  236. */
  237. public void startIdCardBackActivity(IdCardBackResultListener resultListener) {
  238. // ...
  239. }
  240. /**
  241. * 登录成功后,调用此函数拉起sdk页面
  242. * 打开银行卡识别
  243. * @param resultListener 用于返回识别结果
  244. */
  245. public void startBankCardActivity(BankCardResultListener resultListener) {
  246. // ...
  247. }
  248. /**
  249. * 登录回调接口
  250. */
  251. public interface OcrLoginListener {
  252. void onLoginSuccess();
  253. void onLoginFailed(String errorCode, String errorMsg);
  254. }
  255. /**
  256. * Ocr结果回调接口
  257. */
  258. public interface TakePhotoResultListener {
  259. /**
  260. * @RARAM exidCardResult SDK返回的识别结果的错误码
  261. * @RARAM exidCardResult SDK返回的识别结果的错误信息
  262. */
  263. void onFailed(String errorCode, String errorMsg);
  264. void onFinish(String result);
  265. }
  266. /**
  267. * Ocr结果回调接口
  268. */
  269. public interface IdCardFrontResultListener {
  270. /**
  271. * @RARAM exidCardResult SDK返回的识别结果的错误码
  272. * @RARAM exidCardResult SDK返回的识别结果的错误信息
  273. */
  274. void onFailed(String errorCode, String errorMsg);
  275. void onFinish(IdCardFrontData result);
  276. }
  277. /**
  278. * Ocr结果回调接口
  279. */
  280. public interface IdCardBackResultListener {
  281. /**
  282. * @RARAM exidCardResult SDK返回的识别结果的错误码
  283. * @RARAM exidCardResult SDK返回的识别结果的错误信息
  284. */
  285. void onFailed(String errorCode, String errorMsg);
  286. void onFinish(IdCardBackData result);
  287. }
  288. /**
  289. * Ocr结果回调接口
  290. */
  291. public interface BankCardResultListener {
  292. /**
  293. * @RARAM exidCardResult SDK返回的识别结果的错误码
  294. * @RARAM exidCardResult SDK返回的识别结果的错误信息
  295. */
  296. void onFailed(String errorCode, String errorMsg);
  297. void onFinish(BankCardData result);
  298. }
  299. ```