生态文档
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.

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

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. # 配置流程
  2. ## 接入配置
  3. ### 注意事项
  4. - 人脸核身 SDK 最低支持到 支持 Android 4.0 以上版本 API LEVEL 16。
  5. - 人脸核身 SDK 仅支持 armeabi-v7a
  6. - 人脸核身 SDK 将以 AAR 文件的形式提供,faceid-release.aar 和 faceplatform-release.aar。
  7. - 人脸核身 SDK 同时需要依赖**公共组件(common-release.aar)**,同样也是以 AAR 文件的形式提供,详情请参见 [添加依赖](#yilai)。
  8. ### 配置证书和签名
  9. 1. 提供应用ID和签名文件md5码获取以下3个证书文件([如何获取应用ID和签名文件md5码](https://cugeducn-my.sharepoint.com/:b:/g/personal/zhouxc_cug_edu_cn/EQA0mcJoDFhPvJmuKXIuumEBuDf-Bo9seappz2OqhW06fQ?e=ZzQoUC)),放入您的项目目录 `app\src\main\assets`。
  10. * aip.license
  11. * idl-key.face-android
  12. * idl-license.face-android
  13. 2. app\build.gradle 内配置:
  14. ```
  15. android {
  16. ...
  17. signingConfigs {
  18. debug {
  19. storeFile file('xxxx.jks')//申请证书时的签名文件
  20. storePassword 'xxxx'
  21. keyAlias = 'xxxx'
  22. keyPassword 'xxxx'
  23. }
  24. }
  25. ...
  26. defaultConfig {
  27. ...
  28. ndk {
  29. abiFilters "armeabi-v7a"//sdk仅支持,大于这个范围运行,会报找不到xxx.so文件
  30. }
  31. ...
  32. }
  33. }
  34. ```
  35. ###
  36. <span id='yilai'></span>
  37. ### 添加依赖
  38. 为人脸核身 SDK 添加依赖的方式:将提供的 AAR 文件加入到 App 工程的 libs 文件夹内,并且在 build.gradle 中添加下面的配置。
  39. ```
  40. android{
  41. //...
  42. repositories {
  43. flatDir {
  44. dirs 'libs' //this way we can find the .aar file in libs folder
  45. }
  46. }
  47. }
  48. //添加依赖
  49. dependencies {
  50. // json依赖
  51. implementation 'com.alibaba:fastjson:1.2.73'
  52. // okHttp依赖
  53. implementation 'com.squareup.okhttp3:okhttp:4.0.0'
  54. // 公共组件
  55. implementation(name: 'common-release', ext: 'aar')
  56. // 人脸核身
  57. implementation(name: 'faceid-release', ext: 'aar')
  58. implementation(name: 'faceplatform-release', ext: 'aar')
  59. }
  60. ```
  61. ### 权限检测
  62. 在AndroidManifest.xml中添加
  63. ```
  64. <uses-permission android:name="android.permission.RECORD_AUDIO"/>
  65. <uses-permission android:name="android.permission.INTERNET"/>
  66. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  67. <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
  68. <uses-permission android:name="android.permission.CAMERA"/>
  69. <uses-permission android:name="android.permission.RECORD_AUDIO"/>
  70. <uses-permission android:name="android.hardware.camera.autofocus"/>
  71. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  72. <uses-permission android:name="android.permission.WRITE_SETTINGS" tools:ignore="ProtectedPermissions" />
  73. ```
  74. - **Android 6.0 以上系统**
  75. SDK 需要用到以上权限,对 Android 6.0 以上的系统 SDK 会做权限的运行时检测。
  76. - **Android 6.0 以下系统**
  77. -由于 Android 6.0 以下系统 Android 并没有运行时权限检测,建议调用方在拉起 SDK 前,对权限进行检测。-
  78. <span id='shili'></span>
  79. # 接入示例
  80. 快速调用:
  81. ```
  82. # 在MainActivity中单击某个按钮的代码逻辑
  83. Credential cert=new Credential();
  84. final FaceidSDK.IDCardInputData inputdata=FaceidSDK.getInstance().new IDCardInputData("xxx","xxx");
  85. cert.setPassword("xxxx");
  86. cert.setUserCode("xxxx");
  87. cert.setUrl("xxxx");
  88. cert.setSysName("xxxx");
  89. FaceidSDK.getInstance().init(MainActivity.this, cert,new FaceidSDK.FaceidLoginListener() {
  90. @Override
  91. public void onLoginSuccess() { //登录成功,拉起 SDK 页面
  92. FaceidSDK.getInstance().startActivity(inputdata, new FaceidSDK.FaceidResultListener() {
  93. @Override
  94. public void onFailed(String errorCode, String errorMsg) {
  95. //txtresult.setText("失败:错误码"+errorCode+";错误信息"+errorMsg);
  96. }
  97. @Override
  98. public void onFinish(FaceidSDK.OutputData result) {
  99. //txtresult.setText("操作完成:识别结果"+result.isSuccess()+";相似分数"+result.getScore());
  100. }
  101. });
  102. }
  103. @Override
  104. public void onLoginFailed(String errorCode, String errorMsg) {
  105. }
  106. });
  107. ```
  108. [完整demo下载](./demo/faceidsdkdemo.rar) (跳转后点击查看**原始文件**)
  109. # 接口详细说明
  110. ## SDK 接口调用方法
  111. SDK 代码调用的入口为 `FaceidSDK` 这个类。
  112. ```
  113. public class FaceidSDK {
  114. /**
  115. * 该类为一个单例,需要先获得单例对象再进行后续操作
  116. */
  117. public static FaceidSDK getInstance(){
  118. // ...
  119. }
  120. /**
  121. * 自定义动作参数,在init执行之前设置才有效
  122. * 设置“人脸动作范围”,“从范围中随机选取几个动作”等参数
  123. */
  124. public void setFaceSDKConfig(FaceSDKConfig faceSDKConfig) {
  125. // ...
  126. }
  127. /**
  128. * 在使用SDK前先初始化,
  129. * 传入证书key `credential`,
  130. * 由 FaceidLoginListener返回是否初始化SDK成功
  131. */
  132. public void init(Context context,Credential credential, FaceidLoginListener loginListerner){
  133. // ...
  134. }
  135. /**
  136. * 入口方法一
  137. * 初始化成功后,调用此函数拉起sdk页面。
  138. * 传入IDCardInputData(身份证,姓名)
  139. * 由FaceidResultListener返回人脸核身结果。
  140. */
  141. public void startActivity(IDCardInputData data,FaceidResultListener resultListener) {
  142. // ...
  143. }
  144. /**
  145. * 入口方法二
  146. * 初始化成功后,调用此函数拉起sdk页面。
  147. * 传入PhotoInputData(照片)
  148. * 由FaceidResultListener返回人脸核身结果。
  149. */
  150. public void startActivity(PhotoInputData data,FaceidResultListener resultListener) {
  151. // ...
  152. }
  153. /**
  154. * 初始化回调接口
  155. */
  156. public interface FaceidLoginListener {
  157. void onLoginSuccess();
  158. void onLoginFailed(String errorCode, String errorMsg);
  159. }
  160. /**
  161. * 人脸核身结果回调接口
  162. */
  163. public interface FaceidResultListener{
  164. void onFailed(String errorCode, String errorMsg);
  165. void onFinish(OutputData result);
  166. }
  167. ```
  168. `startActivity()` 的参数PhotoInputData和IDCardInputData用来传递数据:
  169. ```
  170. String name; //姓名
  171. String idNum; //身份证
  172. ----
  173. DataItem photo;//照片信息
  174. ```
  175. > 以上参数被分别封装在 `FaceidSDK.PhotoInputData`,`FaceidSDK.IDCardInputData` 对象中。
  176. ## 接入示例
  177. 关于接口调用的示例可参考 [接入示例](#shili)
  178. <span id='canshu'></span>
  179. ## 接口参数说明
  180. | IDCardInputData参数 | 说明 | 类型 | 长度(字节) | 是否必填 |
  181. | --- | --- | --- | --- | --- |
  182. | name | 核验人的姓名| String | - | 是 |
  183. | idNum | 核验人的身份证号 | String | 32 | 是 |
  184. | PhotoInputData参数 | 说明 | 类型 | 长度(字节) | 是否必填 |
  185. | --- | --- | --- | --- | --- |
  186. | photo | 核验人的照片,DataItem属性见下表| DataItem | - | 是 |
  187. | DataItem属性 | 说明 | 类型 | 是否必填 |
  188. | --- | --- | --- | --- |
  189. | origin | 文件类型<br/> base64形式:self<br/> 链接形式:uri <br/> | DataItem.DataOrigin | 是 |
  190. | data | 照片内容(base64或uri链接)| String | 是 |
  191. <span id='zidingyi'></span>
  192. ## 动作参数说明
  193. | FaceSDKConfig参数 | 说明 | 类型 |
  194. | --- | --- | --- |
  195. | actions | 动作范围<br/> 可选"eye","mouth","headRight","headLeft","headUp","headDown","yaw"<br/>默认包含所有| List\<String\> |
  196. | actionOrderRandom | 动作顺序是否随机,默认true | boolean |
  197. | actionNum | 随机从actions中选取几个动作,默认3 | int |
  198. ## 动作
  199. | 参数名 | 说明 |
  200. | --- | --- |
  201. | eye | 眨眼 |
  202. | mouth | 张嘴 |
  203. | headRight | 头右转 |
  204. | headLeft | 头左转 |
  205. | headUp | 抬头 |
  206. | headDown | 点头 |
  207. | yaw | 摇头 |
  208. # 错误码
  209. > 非0为未通过