生态文档
Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

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

已废弃,见新文档

配置流程

接入配置

注意事项

配置证书和签名

  1. 提供应用ID和签名文件md5码获取证书文件idl-license.face-android,和证书ID LicenseID如何获取应用ID和签名文件md5码),放入您的项目目录 app\src\main\assets
  2. app\build.gradle 内配置:

    android {
        ...
        signingConfigs {
            debug {
                storeFile file('xxxx.jks')//申请证书时的签名文件
                storePassword 'xxxx'
                keyAlias = 'xxxx'
                keyPassword 'xxxx'
            }
        }
        ...
        defaultConfig {
        ...
        ndk {
                abiFilters  "armeabi-v7a"//sdk仅支持,大于这个范围运行,会报找不到xxx.so文件
            }
        ...
        }
    }
    
    

添加依赖

将提供的 AAR 文件加入到 App 工程的 libs 文件夹内,并且在 build.gradle 中添加下面的配置。

android{
     //...
     repositories {
        flatDir {
            dirs 'libs' //this way we can find the .aar file in libs folder
        }
    }
}

//添加依赖
dependencies {
    // json依赖
    implementation 'com.alibaba:fastjson:1.2.73'
    // okHttp依赖
    implementation 'com.squareup.okhttp3:okhttp:4.0.0'
    // 公共组件
    implementation(name: 'common-release', ext: 'aar')
    // 人脸核身
    implementation(name: 'faceid-release', ext: 'aar')
    implementation(name: 'faceplatform-release', ext: 'aar')
}

权限检测

在AndroidManifest.xml中添加

    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    <uses-permission android:name="android.hardware.camera.autofocus"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_SETTINGS" tools:ignore="ProtectedPermissions" />
        
  • Android 6.0 以上系统 SDK 需要用到以上权限,对 Android 6.0 以上的系统 SDK 会做权限的运行时检测。
  • Android 6.0 以下系统 -由于 Android 6.0 以下系统 Android 并没有运行时权限检测,建议调用方在拉起 SDK 前,对权限进行检测。-

接入示例

快速调用:

# 在MainActivity中单击某个按钮的代码逻辑

Credential cert=new Credential();
final FaceidSDK.IDCardInputData inputdata=FaceidSDK.getInstance().new IDCardInputData("xxx","xxx");
cert.setPassword("xxxx");
cert.setUserCode("xxxx");
cert.setUrl("xxxx");
cert.setSysName("xxxx");

FaceidSDK.getInstance().init(MainActivity.this,"你的LicenseID", cert,new FaceidSDK.FaceidLoginListener() {
    @Override
    public void onLoginSuccess() { //登录成功,拉起 入口方法一 的SDK 页面,
        FaceidSDK.getInstance().startActivity(inputdata, new FaceidSDK.FaceidResultListener() {
            @Override
            public void onFailed(String errorCode, String errorMsg) {
                //txtresult.setText("失败:错误码"+errorCode+";错误信息"+errorMsg);
            }

            @Override
            public void onFinish(FaceidSDK.OutputData result) {
                //txtresult.setText("操作完成:识别结果"+result.isSuccess()+";相似分数"+result.getScore());

            }
        });
    }

    @Override
    public void onLoginFailed(String errorCode, String errorMsg) {

    }
});

完整demo和sdk下载 (跳转后点击查看原始文件)

接口详细说明

SDK 接口调用方法

SDK 代码调用的入口为 FaceidSDK 这个类。

public class FaceidSDK {
    /**
    * 该类为一个单例,需要先获得单例对象再进行后续操作
    */
    public static FaceidSDK getInstance(){
    //    ...
    }
    
    
    /**
    * 自定义动作参数,在init执行之前设置才有效
    * 设置“人脸动作范围”,“从范围中随机选取几个动作”等参数
    */
    public void setFaceSDKConfig(FaceSDKConfig faceSDKConfig) {
    //    ...
    }

    /**
    * 在使用SDK前先初始化,
    * 传入证书key `credential`,证书id LicenseID
    * 由 FaceidLoginListener返回是否初始化SDK成功
    */
    public void init(Context context,String LicenseID,Credential credential, FaceidLoginListener loginListerner){
    //    ...
    }

    /**
    * 入口方法一 人脸核身
    * 初始化成功后,调用此函数拉起sdk页面。
    * 传入IDCardInputData(身份证,姓名)
    * 由FaceidResultListener返回人脸核身结果。
    */
    public void startActivity(IDCardInputData data,FaceidResultListener resultListener) {    
        // ...
    }
    
    /**
    * 入口方法二 人脸比对
    * 初始化成功后,调用此函数拉起sdk页面。
    * 传入PhotoInputData(照片)
    * 由FaceidResultListener返回人脸核身结果。
    */
    public void startActivity(PhotoInputData data,FaceidResultListener resultListener) {    
        // ...
    }

    /**
    * 入口方法三 照片采集
    * 初始化成功后,调用此函数拉起sdk照片采集页面。
    * 由faceDataResultListener返回照片。
    */
    public void startActivity(faceDataResultListener resultListener) {    
        // ...
    }

    /**
     * 初始化回调接口
     */
    public interface FaceidLoginListener {
        void onLoginSuccess();
        void onLoginFailed(String errorCode, String errorMsg);
    }

    /**
    * 人脸核身结果回调接口
    */
    public interface FaceidResultListener{
        void onFailed(String errorCode, String errorMsg);
        void onFinish(OutputData result);
    }
    /**
    * 照片采集结果回调接口
    */
    public interface FaceDataResultListener {
    void onFailed(String errorCode, String errorMsg);
    void onFinish(OutputFaceData result);
    }

startActivity() 的参数PhotoInputData和IDCardInputData用来传递数据:

    String name; //姓名
    String idNum; //身份证
    ----
    DataItem photo;//照片信息

以上参数被分别封装在 FaceidSDK.PhotoInputDataFaceidSDK.IDCardInputData 对象中。

接入示例

关于接口调用的示例可参考 接入示例

接口参数说明

IDCardInputData参数 说明 类型 长度(字节) 是否必填
name 核验人的姓名 String -
idNum 核验人的身份证号 String 32
PhotoInputData参数 说明 类型 长度(字节) 是否必填
photo 核验人的照片,DataItem属性见下表 DataItem -
DataItem属性 说明 类型 是否必填
origin 文件类型
base64形式:self
链接形式:uri
DataItem.DataOrigin
data 照片内容(base64或uri链接) String

动作参数说明

FaceSDKConfig参数 说明 类型
actions 动作范围
可选”eye”,“mouth”,“headRight”,“headLeft”,“headUp”,“headDown”,“yaw”
默认包含所有
List<String>
actionOrderRandom 动作顺序是否随机,默认true boolean
actionNum 随机从actions中选取几个动作,默认3 int

动作

参数名 说明
eye 眨眼
mouth 张嘴
headRight 头右转
headLeft 头左转
headUp 抬头
headDown 点头
yaw 摇摇头