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