|
@@ -4,9 +4,45 @@
|
4
|
4
|
|
5
|
5
|
### 注意事项
|
6
|
6
|
|
7
|
|
-- 人脸核身 SDK(Faceid)最低支持到 支持 Android 4.0 以上版本 API LEVEL 16。
|
8
|
|
-- 人脸核身 SDK 将以 AAR 文件的形式提供,即 faceidsdk.aar。
|
9
|
|
-- 人脸核身 SDK 同时需要依赖**公共组件(cepm_common.aar)**,同样也是以 AAR 文件的形式提供,详情请参见 [添加依赖](#yilai)。
|
|
7
|
+- 人脸核身 SDK(Faceid)最低支持到 支持 Android 4.0 以上版本 API LEVEL 16,armeabi-v7a。
|
|
8
|
+- 人脸核身 SDK 将以 AAR 文件的形式提供,即 faceid-release.aar 和 faceplatform-release.aar。
|
|
9
|
+- 人脸核身 SDK 同时需要依赖**公共组件(common-release.aar)**,同样也是以 AAR 文件的形式提供,详情请参见 [添加依赖](#yilai)。
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+### 配置证书和签名
|
|
13
|
+
|
|
14
|
+1. 提供 appid 和 签名文件md5码 获取证书文件(待补充)
|
|
15
|
+ * aip.license
|
|
16
|
+ * idl-key.face-android
|
|
17
|
+ * idl-license.face-android
|
|
18
|
+2. 配置文件:console_config.json
|
|
19
|
+3. 4个文件放入您的项目目录 `app\src\main\assets`
|
|
20
|
+4. app\build.gradle 内配置:
|
|
21
|
+
|
|
22
|
+ ```
|
|
23
|
+ android {
|
|
24
|
+ ...
|
|
25
|
+ signingConfigs {
|
|
26
|
+ debug {
|
|
27
|
+ storeFile file('xxxx.jks')//申请证书时的签名文件
|
|
28
|
+ storePassword 'xxxx'
|
|
29
|
+ keyAlias = 'xxxx'
|
|
30
|
+ keyPassword 'xxxx'
|
|
31
|
+ }
|
|
32
|
+ }
|
|
33
|
+ ...
|
|
34
|
+ defaultConfig {
|
|
35
|
+ ...
|
|
36
|
+ ndk {
|
|
37
|
+ abiFilters "armeabi-v7a"//sdk仅支持,大于这个范围运行,会报找不到xxx.so文件
|
|
38
|
+ }
|
|
39
|
+ ...
|
|
40
|
+ }
|
|
41
|
+ }
|
|
42
|
+
|
|
43
|
+ ```
|
|
44
|
+
|
|
45
|
+###
|
10
|
46
|
|
11
|
47
|
|
12
|
48
|
<span id='yilai'></span>
|
|
@@ -31,10 +67,11 @@ dependencies {
|
31
|
67
|
implementation 'com.alibaba:fastjson:1.2.73'
|
32
|
68
|
// okHttp依赖
|
33
|
69
|
implementation 'com.squareup.okhttp3:okhttp:4.0.0'
|
34
|
|
- // 公共aar
|
35
|
|
- implementation(name: 'cepm_common', ext: 'aar')
|
36
|
|
- // 活体核身
|
37
|
|
- implementation(name: 'faceidsdk', ext: 'aar')
|
|
70
|
+ // common-release.aar
|
|
71
|
+ implementation(name: 'common-release', ext: 'aar')
|
|
72
|
+ // 人脸核身
|
|
73
|
+ implementation(name: 'faceid-release', ext: 'aar')
|
|
74
|
+ implementation(name: 'faceplatform-release', ext: 'aar')
|
38
|
75
|
}
|
39
|
76
|
|
40
|
77
|
```
|
|
@@ -42,14 +79,21 @@ dependencies {
|
42
|
79
|
|
43
|
80
|
在AndroidManifest.xml中添加
|
44
|
81
|
```
|
45
|
|
-<uses-permission android:name="android.permission.INTERNET" />
|
46
|
|
-<uses-permission android:name="android.permission.CAMERA" />
|
47
|
|
-<uses-permission android:name="android.permission.RECORD_AUDIO"/>
|
|
82
|
+ <uses-permission android:name="android.permission.RECORD_AUDIO"/>
|
|
83
|
+ <uses-permission android:name="android.permission.INTERNET"/>
|
|
84
|
+ <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
|
85
|
+ <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
|
|
86
|
+ <uses-permission android:name="android.permission.CAMERA"/>
|
|
87
|
+ <uses-permission android:name="android.permission.RECORD_AUDIO"/>
|
|
88
|
+ <uses-permission android:name="android.hardware.camera.autofocus"/>
|
|
89
|
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
|
90
|
+ <uses-permission android:name="android.permission.WRITE_SETTINGS" tools:ignore="ProtectedPermissions" />
|
|
91
|
+
|
48
|
92
|
```
|
49
|
93
|
- **Android 6.0 以上系统**
|
50
|
|
-SDK 需要用到网络/相机/录音权限,对 Android 6.0 以上的系统 SDK 会做权限的运行时检测。
|
|
94
|
+SDK 需要用到以上权限,对 Android 6.0 以上的系统 SDK 会做权限的运行时检测。
|
51
|
95
|
- **Android 6.0 以下系统**
|
52
|
|
- 由于 Android 6.0 以下系统 Android 并没有运行时权限检测,建议调用方在拉起 SDK 前,对网络/相机/麦克风检测。
|
|
96
|
+ -由于 Android 6.0 以下系统 Android 并没有运行时权限检测,建议调用方在拉起 SDK 前,对权限进行检测。-
|
53
|
97
|
|
54
|
98
|
## 混淆配置
|
55
|
99
|
|
|
@@ -61,29 +105,31 @@ SDK 需要用到网络/相机/录音权限,对 Android 6.0 以上的系统 SDK
|
61
|
105
|
```
|
62
|
106
|
# 在MainActivity中单击某个按钮的代码逻辑
|
63
|
107
|
|
64
|
|
-FaceidSDK.IDCardInputData inputdata=FaceidSDK.getInstance().new IDCardInputData(name.getText().toString(),idNum.getText().toString(), videoType);
|
65
|
|
-Credential credential = new Credential();
|
66
|
|
-credential.setSysName("XXXX").setPassword("XXXX").setUserCode("XXXX").setUrl("https://cepmtest.dhcccloud.com.cn/gateway");
|
67
|
|
-
|
68
|
|
-FaceidSDK.getInstance().init(MainActivity.this, credential,new FaceidSDK.FaceidLoginListener() {
|
|
108
|
+Credential cert=new Credential();
|
|
109
|
+final FaceidSDK.IDCardInputData inputdata=FaceidSDK.getInstance().new IDCardInputData("xxx","xxx");
|
|
110
|
+cert.setPassword("xxxx");
|
|
111
|
+cert.setUserCode("xxxx");
|
|
112
|
+cert.setUrl("xxxx");
|
|
113
|
+cert.setSysName("xxxx");
|
|
114
|
+FaceidSDK.getInstance().init(MainActivity.this, cert,new FaceidSDK.FaceidLoginListener() {
|
69
|
115
|
@Override
|
70
|
116
|
public void onLoginSuccess() { //登录成功,拉起 SDK 页面
|
71
|
|
- FaceidSDK.getInstance().startActivity(MainActivity.this,inputdata, new FaceidSDK.FaceidResultListener() {
|
|
117
|
+ FaceidSDK.getInstance().startActivity(inputdata, new FaceidSDK.FaceidResultListener() {
|
72
|
118
|
@Override
|
73
|
119
|
public void onFailed(String errorCode, String errorMsg) {
|
74
|
|
- txtresult.setText("失败:错误码"+errorCode+";错误信息"+errorMsg);
|
|
120
|
+ //txtresult.setText("失败:错误码"+errorCode+";错误信息"+errorMsg);
|
75
|
121
|
}
|
76
|
122
|
|
77
|
123
|
@Override
|
78
|
124
|
public void onFinish(FaceidSDK.OutputData result) {
|
79
|
|
- txtresult.setText("操作完成:识别结果"+result.isSuccess()+";相似分数"+result.getScore());
|
|
125
|
+ //txtresult.setText("操作完成:识别结果"+result.isSuccess()+";相似分数"+result.getScore());
|
80
|
126
|
|
81
|
127
|
}
|
82
|
128
|
});
|
83
|
129
|
}
|
84
|
130
|
|
85
|
131
|
@Override
|
86
|
|
- public void onLoginFailed(String errorCode, String errorMsg) {
|
|
132
|
+ public void onLoginFailed(String s, String s1) {
|
87
|
133
|
|
88
|
134
|
}
|
89
|
135
|
});
|
|
@@ -119,7 +165,7 @@ public class FaceidSDK {
|
119
|
165
|
* 传入IDCardInputData(身份证,姓名,动作类型)
|
120
|
166
|
* 由FaceidResultListener返回人脸核身结果。
|
121
|
167
|
*/
|
122
|
|
- public void startActivity(Context context, IDCardInputData data,FaceidResultListener resultListener) {
|
|
168
|
+ public void startActivity(IDCardInputData data,FaceidResultListener resultListener) {
|
123
|
169
|
// ...
|
124
|
170
|
}
|
125
|
171
|
|
|
@@ -128,7 +174,7 @@ public class FaceidSDK {
|
128
|
174
|
* 传入PhotoInputData(照片,动作类型)
|
129
|
175
|
* 由FaceidResultListener返回人脸核身结果。
|
130
|
176
|
*/
|
131
|
|
- public void startActivity(Context context, PhotoInputData data,FaceidResultListener resultListener) {
|
|
177
|
+ public void startActivity(PhotoInputData data,FaceidResultListener resultListener) {
|
132
|
178
|
// ...
|
133
|
179
|
}
|
134
|
180
|
|
|
@@ -149,12 +195,12 @@ public class FaceidSDK {
|
149
|
195
|
}
|
150
|
196
|
```
|
151
|
197
|
|
152
|
|
-`startActivity()` 的第二个参数PhotoInputData和IDCardInputData用来传递数据:
|
|
198
|
+`startActivity()` 的参数PhotoInputData和IDCardInputData用来传递数据:
|
153
|
199
|
|
154
|
200
|
```
|
155
|
201
|
String name; //姓名
|
156
|
202
|
String idNum; //身份证
|
157
|
|
- FaceidSDK.VideoType videoType;//LIP数字模式,ACTION动作模式, SILENT静默模式
|
|
203
|
+ ----
|
158
|
204
|
DataItem photo;//照片信息
|
159
|
205
|
```
|
160
|
206
|
|
|
@@ -171,17 +217,16 @@ public class FaceidSDK {
|
171
|
217
|
| --- | --- | --- | --- | --- |
|
172
|
218
|
| name | 核验人的姓名| String | - | 是 |
|
173
|
219
|
| idNum | 核验人的身份证号 | String | 32 | 是 |
|
174
|
|
-| videoType | 人脸核身类型<br/>动作活体:FaceidSDK.VideoType.ACTION<br/>数字活体:FaceidSDK.VideoType.LIP<br/>静默活体:FaceidSDK.VideoType.SILENT | FaceidSDK.VideoType | - | 是 |
|
|
220
|
+
|
175
|
221
|
|
176
|
222
|
| PhotoInputData参数 | 说明 | 类型 | 长度(字节) | 是否必填 |
|
177
|
223
|
| --- | --- | --- | --- | --- |
|
178
|
224
|
| photo | 核验人的照片,DataItem属性见下表| DataItem | - | 是 |
|
179
|
|
-| videoType | 人脸核身类型<br/>动作活体:FaceidSDK.VideoType.ACTION<br/>数字活体:FaceidSDK.VideoType.LIP<br/>静默活体:FaceidSDK.VideoType.SILENT | FaceidSDK.VideoType | - | 是 |
|
180
|
225
|
|
181
|
226
|
|
182
|
227
|
| DataItem属性 | 说明 | 类型 | 是否必填 |
|
183
|
228
|
| --- | --- | --- | --- |
|
184
|
|
-| origin | 文件类型<br/> base64传输:self<br/>来自文件服务器:fds (**带压缩效果,推荐使用,详见[fds使用文档](../file/文件服务器接口.md))**<br/>链接:uri | DataItem.DataOrigin | 是 |
|
185
|
|
-| data | 照片内容(base64,文件服务器文件名或uri链接)| String | 是 |
|
|
229
|
+| origin | 文件类型<br/> base64形式:self<br/> 链接形式:uri <br/> | DataItem.DataOrigin | 是 |
|
|
230
|
+| data | 照片内容(base64或uri链接)| String | 是 |
|
186
|
231
|
# 错误码
|
187
|
232
|
> 非0为未通过
|