Android客户端接入教程

人脸核身服务提供Android客户端SDK帮助您在App中实现刷脸认证功能。本文将结合示例代码指导您在Android应用中集成人脸核身服务。

说明

阿里云视觉智能开放平台各类目视觉AI能力API接入、接口使用或问题咨询等,请通过钉钉群(23109592)加入阿里云视觉智能开放平台咨询群联系我们。

前提条件

应用必须在Android 4.4+真机平台上运行。

权限说明

如果需要适配折叠屏手机,需要在App的AndroidManifest.xml中注册以下权限,以便SDK监听折叠屏设备的折叠/展开状态改变。

 <uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/>

获取SDK和Demo代码

重要

模拟器使用存在安全风险,暂不支持在模拟器上运行。

配置依赖

  1. 解压SDK,将所有.aar包放入libs目录下。

  2. 在工程的build.gradle文件中添加libs目录作为依赖仓库。

    repositories {
        flatDir {
            dirs 'libs'   // aar目录
        }
    }
  3. 在应用的build.gradle文件中添加配置。

    android {       
        // 添加以下内容      
        useLibrary 'org.apache.http.legacy'
    }
  4. 在应用的build.gradle文件中添加依赖。

    dependencies { 
        ....
         //fastjson 依赖    
        implementation 'com.alibaba:fastjson:1.2.83_noneautotype'    
         // 本地依赖    
        compile(name: 'baseverify-2.3.15.240328142352', ext: 'aar') 		
            compile(name: 'facade-2.3.15.240328142352', ext: 'aar') 		
            compile(name: 'face-2.3.15.240328142352', ext: 'aar') 		
            compile(name: 'ocr-2.3.15.240328142352', ext: 'aar') 		
            compile(name: 'faceaudio-2.3.15.240328142352', ext: 'aar') 		
            compile(name: 'facelanguage-2.3.15.240328142352', ext: 'aar') 		
            compile(name: 'APSecuritySDK-DeepSec-7.0.1.20240314.jiagu', ext: 'aar')
    }
    
    

调用接口

  1. 初始化SDK。

    为提高身份核验的用户体验,并为刷脸认证准备必要数据,Android客户端需要进行SDK初始化。初始化的代码示例如下:

    ZIMFacade.install(context);
  2. 获取metainfo数据。

    代码示例如下:

    String metaInfos = ZIMFacade.getMetaInfos(context);

    接入方移动端在人脸核身移动端核身认证移动端请求时需要传入该metainfo值。

  3. 开始认证。

    代码示例如下:

    ZIMFacade zimFacade = ZIMFacadeBuilder.create(MainActivity.this);
    HashMap<String, String> extParams = new HashMap<>();
    //如需指定活体检测UI界面方向(横屏),请指定这一项。
    // extParams.put(ZIMFacade.ZIM_EXT_PARAMS_KEY_SCREEN_ORIENTATION, ZIMFacade.ZIM_EXT_PARAMS_VAL_SCREEN_LAND);
    //如需支持活体视频返回,请指定这一项,并在response.videoFilePath中获取视频本地路径。
    extParams.put(ZIMFacade.ZIM_EXT_PARAMS_KEY_USE_VIDEO, ZIMFacade.ZIM_EXT_PARAMS_VAL_USE_VIDEO_TRUE);
    //如需自定义活体检测页面的进度条颜色(默认可不设置),请设置此项,如红色 #FF0000。
    extParams.put(ZIMFacade.ZIM_EXT_PARAMS_KEY_FACE_PROGRESS_COLOR, "#FF0000");
    zimFacade.verify(verificationToken, true, extParams, new ZIMCallback() {
        @Override
        public boolean response(final ZIMResponse response) {
            if (1000 == response.code) {
                showMessageBox("刷脸通过");
            } else {
                showMessageBox("刷脸失败([" + response.code + "]" + response.reason + ")");
            }
            return true;
        }
    });
    说明
    • 调用核身认证移动端请求接口返回的verificationToken有效期时间为30分钟,从verificationToken生成时间开始算起,超过有效期再进行人脸认证会报错,请在有效期时间内完成认证。

    • ZIMCallback的response回调需要有返回值,默认为true。

  4. 返回结果。

    刷脸认证SDK回调结果中的ZIMResponse类,该类中定义了对应的结果编码和原因,如下所示:

    /**
     * 刷脸认证回调结果
     */
    public class ZIMResponse {
        /**
         * 返回结果编码:
         * 1000: 刷脸成功
         * 1001: 系统错误
         * 1003: 验证中断
         * 2002: 网络错误
         * 2006: 刷脸失败
         */
        public int code;
        /**
         * 返回结果原因信息
         */
        public String reason;
        /**
         * 结果文案描述,可能为空
         */
        public String msg;
        /**
         * 设备token
         */
        public String deviceToken;
        /**
         * 如果采用视频返照,这个字段返回视频的路径
         */
        public String videoFilePath;
        /**
         * 人脸核身返照照片
         */
        public byte[] bitmap;
    }

    返回结果说明。

    HttpCode

    描述

    1000

    表示刷脸成功,该结果仅供参考,可通过移动端核身认证移动端查询获取最终认证结果。

    1001

    表示系统错误。

    1003

    表示验证中断。

    2002

    表示网络错误。

    2006

    表示刷脸失败,如需获取更详细的失败原因,可通过移动端核身认证移动端查询获取最终认证结果。

    了解更多信息,请参见Android客户端错误码详情

接口混淆配置

为避免接口混淆,您可以参考以下代码来保留类名:

-verbose
-keep class com.alipay.face.api.** {*;}
-keep class com.alipay.zoloz.toyger.**{*;}
-keep class com.dtf.face.api.** {*;}
-keep class com.dtf.face.ocr.verify.DTFOcrFacade { *; }
-keep class com.dtf.face.verify.** {*;}
-keep class com.dtf.face.network.model.** {*;}
-keep class com.dtf.face.network.APICallback {*;}
-keep class com.dtf.face.config.**{*;}
-keep class com.dtf.face.log.** {*;}
-keep class com.dtf.face.ui.widget.ToygerWebView {*;}
-keep class com.dtf.toyger.base.** {*;}
-keep class com.dtf.face.network.mpass.biz.model.** { *; }
-keep class faceverify.** { *; }
-keep class ocrverify.** { *; }
 
-keep class com.alipay.alipaysecuritysdk.** { *; }
-keep class com.alipay.deviceid.** { *; }
 
# FastJson Keep
-keep class com.alibaba.fastjson.** {*;}
-keep class org.json.** {*;}