生态文档
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

安卓活体核身接入文档.md 6.4KB

4 年前
4 年前
4 年前
4 年前
4 年前
4 年前
4 年前
4 年前
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. # 配置流程
  2. ## 接入配置
  3. ### 注意事项
  4. - 人脸核身 SDK(Faceid)最低支持到 支持 Android 4.0 以上版本 API LEVEL 16。
  5. - 人脸核身 SDK 将以 AAR 文件的形式提供,即 faceidsdk.aar。
  6. - 人脸核身 SDK 同时需要依赖**公共组件(cepm_common.aar)**,同样也是以 AAR 文件的形式提供,详情请参见 [添加依赖](#yilai)。
  7. <span id='yilai'></span>
  8. ### 添加依赖
  9. 为人脸核身 SDK 添加依赖的方式:将提供的 AAR 文件加入到 App 工程的 libs 文件夹下面,并且在 build.gradle 中添加下面的配置。
  10. ```
  11. android{
  12. //...
  13. repositories {
  14. flatDir {
  15. dirs 'libs' //this way we can find the .aar file in libs folder
  16. }
  17. }
  18. }
  19. //添加依赖
  20. dependencies {
  21. // json依赖
  22. implementation 'com.alibaba:fastjson:1.2.73'
  23. // okHttp依赖
  24. implementation 'com.squareup.okhttp3:okhttp:4.0.0'
  25. // 公共aar
  26. implementation(name: 'cepm_common', ext: 'aar')
  27. // 活体核身
  28. implementation(name: 'faceidsdk', ext: 'aar')
  29. }
  30. ```
  31. ### 权限检测
  32. 在AndroidManifest.xml中添加
  33. ```
  34. <uses-permission android:name="android.permission.INTERNET" />
  35. <uses-permission android:name="android.permission.CAMERA" />
  36. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  37. <uses-permission android:name="android.permission.RECORD_AUDIO"/>
  38. ```
  39. - **Android 6.0 以上系统**
  40. SDK 需要用到网络/相机/录音/写入手机存储权限,对 Android 6.0 以上的系统会做权限的运行时检测。
  41. - **Android 6.0 以下系统**
  42. 由于 Android 6.0 以下系统 Android 并没有运行时权限检测,建议调用方在拉起 SDK 前,对网络/相机/麦克风/写入手机存储检测。
  43. ## 混淆配置
  44. <span id='shili'></span>
  45. # 接入示例
  46. 视频核身:
  47. ```
  48. # 在MainActivity中单击某个按钮的代码逻辑
  49. FaceidSDK.IDCardInputData inputdata=FaceidSDK.getInstance().new IDCardInputData(name.getText().toString(),idNum.getText().toString(), videoType);
  50. Credential credential = new Credential();
  51. credential.setSysName("XXXX").setPassword("XXXX").setUserCode("XXXX").setUrl("https://cepmtest.dhcccloud.com.cn/gateway");
  52. FaceidSDK.getInstance().init(MainActivity.this, credential,new FaceidSDK.FaceidLoginListener() {
  53. @Override
  54. public void onLoginSuccess() { //登录成功,拉起 SDK 页面
  55. FaceidSDK.getInstance().startActivity(MainActivity.this,inputdata, new FaceidSDK.FaceidResultListener() {
  56. @Override
  57. public void onFailed(String errorCode, String errorMsg) {
  58. txtresult.setText("失败:错误码"+errorCode+";错误信息"+errorMsg);
  59. }
  60. @Override
  61. public void onFinish(FaceidSDK.OutputData result) {
  62. txtresult.setText("操作完成:识别结果"+result.isSuccess()+";相似分数"+result.getScore());
  63. }
  64. });
  65. }
  66. @Override
  67. public void onLoginFailed(String errorCode, String errorMsg) {
  68. }
  69. });
  70. ```
  71. [完整demo下载](./demo/faceidsdkdemo.rar) (跳转后点击查看**原始文件**)
  72. # 接口详细说明
  73. ## SDK 接口调用方法
  74. SDK 代码调用的入口为 `FaceidSDK` 这个类。
  75. ```
  76. public class FaceidSDK {
  77. /**
  78. * 该类为一个单例,需要先获得单例对象再进行后续操作
  79. */
  80. public static FaceidSDK getInstance(){
  81. // ...
  82. }
  83. /**
  84. * 在使用SDK前先初始化,
  85. * 传入证书key `credential`,
  86. * 由 FaceidLoginListener返回是否初始化SDK成功
  87. */
  88. public void init(Context context,Credential credential, FaceidLoginListener loginListerner){
  89. // ...
  90. }
  91. /**
  92. * 初始化成功后,调用此函数拉起sdk页面。
  93. * 传入IDCardInputData(身份证,姓名,动作类型)
  94. * 由FaceidResultListener返回人脸核身结果。
  95. */
  96. public void startActivity(Context context, IDCardInputData data,FaceidResultListener resultListener) {
  97. // ...
  98. }
  99. /**
  100. * 初始化成功后,调用此函数拉起sdk页面。
  101. * 传入PhotoInputData(照片,动作类型)
  102. * 由FaceidResultListener返回人脸核身结果。
  103. */
  104. public void startActivity(Context context, PhotoInputData data,FaceidResultListener resultListener) {
  105. // ...
  106. }
  107. /**
  108. * 初始化回调接口
  109. */
  110. public interface FaceidLoginListener {
  111. void onLoginSuccess();
  112. void onLoginFailed(String errorCode, String errorMsg);
  113. }
  114. /**
  115. * 人脸核身结果回调接口
  116. */
  117. public interface FaceidResultListener{
  118. void onFailed(String errorCode, String errorMsg);
  119. void onFinish(OutputData result);
  120. }
  121. ```
  122. `startActivity()` 的第二个参数PhotoInputData和IDCardInputData用来传递数据:
  123. ```
  124. String name; //姓名
  125. String idNum; //身份证
  126. FaceidSDK.VideoType videoType;//LIP数字模式,ACTION动作模式, SILENT静默模式
  127. DataItem photo;//照片信息
  128. ```
  129. > 以上参数被分别封装在 `FaceidSDK.PhotoInputData`,`FaceidSDK.IDCardInputData` 对象中。
  130. ## 接入示例
  131. 关于接口调用的示例可参考 [接入示例](#shili)
  132. <span id='canshu'></span>
  133. ## 接口参数说明
  134. | IDCardInputData参数 | 说明 | 类型 | 长度(字节) | 是否必填 |
  135. | --- | --- | --- | --- | --- |
  136. | name | 核验人的姓名| String | - | 是 |
  137. | idNum | 核验人的身份证号 | String | 32 | 是 |
  138. | videoType | 人脸核身类型<br/>动作活体:FaceidSDK.VideoType.ACTION<br/>数字活体:FaceidSDK.VideoType.LIP<br/>静默活体:FaceidSDK.VideoType.SILENT | FaceidSDK.VideoType | - | 是 |
  139. | PhotoInputData参数 | 说明 | 类型 | 长度(字节) | 是否必填 |
  140. | --- | --- | --- | --- | --- |
  141. | photo | 核验人的照片,DataItem属性见下表| DataItem | - | 是 |
  142. | videoType | 人脸核身类型<br/>动作活体:FaceidSDK.VideoType.ACTION<br/>数字活体:FaceidSDK.VideoType.LIP<br/>静默活体:FaceidSDK.VideoType.SILENT | FaceidSDK.VideoType | - | 是 |
  143. | DataItem属性 | 说明 | 类型 | 是否必填 |
  144. | --- | --- | --- | --- |
  145. | origin | 文件类型<br/> base64传输:self<br/>来自文件服务器:fds (**带压缩效果,推荐使用,详见[fds使用文档](../file/文件服务器接口.md))**<br/>链接:uri | DataItem.DataOrigin | 是 |
  146. | data | 照片内容(base64,文件服务器文件名或uri链接)| String | 是 |
  147. # 错误码
  148. > 非0为未通过