舌头发黄是什么原因| 两岁宝宝拉肚子吃什么药| prbpm是什么意思| 秃顶是什么原因造成的| 双肺微结节是什么意思| 吃什么能增强免疫力和抵抗力| 年轻人创业做什么好| 什么样的小溪| 在什么情况下最容易怀孕| 心功能iv级是什么意思| 天官是什么意思| 什么是低血压| 强直性脊柱炎什么症状| 国师是什么生肖| 吃什么水果可以减肥| 一案双查是什么意思| 君子兰什么季节开花| 梦见孩子拉粑粑是什么意思| 怀孕早期吃什么| 娇韵诗属于什么档次| 指甲紫色是什么原因| 头皮痒用什么药| 梦见自己坐车是什么意思| 丹参片和复方丹参片有什么区别| 儿童肚子疼挂什么科| 慢性病都包括什么病| 三七粉有什么功效| 普洱茶有什么功效| 三七和田七有什么区别| 肾尿盐结晶是什么意思| 很能睡觉是什么原因| 勇敢的生肖是什么生肖| 贫血三项是指什么检查| 用盐泡脚有什么好处| 孕妇耻骨疼是什么原因| 12月16是什么星座| 胎动频繁是什么原因| 女人做什么好| a4腰什么意思| 辜负什么意思| 60是什么意思| 朱雀玄武是什么意思| 鼎字五行属什么| 单元剧是什么意思| 示数是什么意思| 内啡肽是什么意思| 低血糖和贫血有什么区别| 啫啫是什么意思| 心火大吃什么药| 我不知道你在说什么英文| 扭转乾坤什么意思| 什么牌子的麦克风好用| 右肾小结石是什么意思| 骗婚是什么意思| 肺纤维化什么意思| 心超是检查什么的| 脑门长痘痘是什么原因| lf是什么牌子| 西游记什么朝代写的| 为什么回族不吃猪肉| 高血压吃什么盐比较好| 怎么算自己五行缺什么| 五指毛桃长什么样子| 2018年生肖属什么| 55年属什么生肖| 舌根起泡是什么原因| 集少两撇是什么字| 生气发抖是什么原因| 专业组是什么意思| 抗缪勒氏管激素是检查什么的| 结局he是什么意思| 什么是麦粒肿| 人中上窄下宽代表什么| 百白破是预防什么的| 面粉和淀粉有什么区别| 孕酮低是什么意思| 猫咪弓背是什么原因| 乳头痒什么原因| 煜什么意思| 输卵管囊肿是什么原因引起的| fic是什么意思| 黑眼圈重是什么原因| 咽喉炎吃什么药有效| 流加金念什么| 交泰殿是干什么的| 恩爱是什么意思| hoho是什么意思| mv是什么意思| 未时属什么生肖| 夏季吃什么水果好| 头皮特别痒是什么原因| 梦见打死黄鼠狼是什么意思| 大麦茶有什么功效| 天线宝宝都叫什么名字| 总爱睡觉是什么原因| 蛋白肉是什么东西做的| 原本是什么意思| 双花红棍是什么意思| 女性检查甲功是什么病| 办身份证要带什么| 白带黄色是什么原因| 百合花什么颜色| 拔得头筹是什么意思| 脚趾头发麻什么原因| 十一月一日是什么星座| 什么是cosplay| hib是什么疫苗| jay是什么意思| 黄褐斑内调吃什么药| 史记是什么体史书| 100a是什么尺码| 慰藉是什么意思| 慢性胆囊炎吃什么药| 腊肉炖什么好吃| 二代试管是什么意思| 雾灯什么时候开| 女人要的是什么| 有结石不能吃什么东西| 钥字五行属什么| 尿血是什么问题| 血压低什么症状| 天气一热身上就痒是什么原因| 颅内出血有什么症状| 吃银耳有什么好处和坏处| 猫什么时候绝育| 儿童节吃什么| 辩证什么意思| 老虎菜是什么菜| 四川九寨沟什么时候去最好| 究竟涅盘是什么意思| 15朵玫瑰花代表什么意思| 胃气上逆是什么原因| 负罪感是什么意思| 双相障碍是什么| 安静如鸡什么意思| 老母鸡炖什么好吃又有营养价值| 火是什么颜色| 肾积水是什么原因造成的| 唐顿庄园讲的是什么| 西瓜跟什么不能一起吃| 怀孕了尿液是什么颜色| 敌敌畏中毒用什么洗胃| 妈妈的姐姐应该叫什么| 羹是什么意思| 脆皮是什么意思| 肛门上长了个肉疙瘩是什么原因| 花生对胃有什么好处| imp是什么意思| 血象高是什么原因| 新白娘子传奇许仙为什么用女的演| 这是什么石头| 月经不调有什么危害| 白露是什么意思| 牙槽骨吸收是什么意思| 失物招领是什么意思| 卢沟桥事变又称什么| 感冒流清鼻涕吃什么药| 吃什么可以化痰| 脉细是什么意思| 96年属于什么生肖| 宝宝不喝奶是什么原因| 反清复明的组织叫什么| 梅核气有什么症状| april什么意思| 幸福是什么的经典语录| 1030是什么星座| 吃什么生发效果最好| 彼岸花代表什么星座| 睾丸炎有什么症状| iu是什么意思| 预产期是什么意思| 吃中药喝酒有什么影响| 甲状腺有什么功能| 丹桂飘香是什么季节| 谭震林是什么军衔| q热是什么病| 二月十六是什么星座| 2024年是属什么生肖| 慢性支气管炎吃什么药好| 老子是什么时期的人| 澳门什么时候回归祖国| 慈爱是什么意思| 嘴苦是什么病的征兆| 什么叫冷暴力| 毛囊是什么| 男人为什么喜欢吸奶| 嘴唇薄的男人面相代表什么意味| 紧急避孕药叫什么名字| 睡觉磨牙什么原因| 慢性结肠炎用什么药| gps是什么意思| 联袂是什么意思| 长期拉肚子是怎么回事什么原因造成| 田字出头是什么字| 潮起潮落是什么意思| 睾丸疝气有什么症状| 过敏性鼻炎引起眼睛痒用什么药| 结节3类是什么意思| 午马是什么意思| 什么鸟会说话| 银行卡睡眠状态是什么意思| 小姐的全套都有什么| 童心未泯是什么意思| 斜视是什么原因导致的| 瓜蒌根为什么叫天花粉| 来月经喝酒有什么影响| 边界清是什么意思| 掉头发缺什么| 大闸蟹什么时候吃| 骇人是什么意思| 北方是什么生肖| 花椒泡脚有什么功效| 副支队长是什么级别| ph值是什么意思| 鹅口疮是什么引起的| 丑时属什么生肖| 孕妇吃什么长胎不长肉| 男女双修什么意思| 心口痛是什么原因引起的| 骨折吃什么恢复快| 男人左手断掌是什么命| 什么地流淌| 炸酥肉用什么肉最好吃| 喉咙长溃疡是什么原因| 经常腰酸是什么原因女性| 胃溃疡吃什么好| 两毛四是什么军衔| 清火喝什么茶| 12月26是什么星座| 谷氨酸是什么| 梦见煎鱼是什么预兆| 什么是腐女| 蟑螂喜欢什么样的环境| 界限性脑电图是什么意思| 便秘不能吃什么食物| 吃什么清理血管| 女人银屑病一般都长什么地方| 五音指什么| 中筋面粉是什么粉| 梦见大蜘蛛是什么预兆| 相对而行是什么意思| mct是什么| 王羲之的儿子叫什么名字| 劼字取名的寓意是什么| 糖尿病2型是什么意思| uniqlo是什么牌子| 沉珂是什么意思| 旺是什么意思| 有胃火口臭怎么办吃什么药| 梦见棺材是什么意思| 白细胞一个加号什么意思| 众矢之地是什么意思| 来月经前胸胀痛什么原因| 症瘕痞块是什么意思| sansay是什么牌子| 三姓家奴是什么意思| 腰椎退行性改变是什么意思| 激光脱毛挂什么科| 因加一笔是什么字| 大肠杆菌感染吃什么药| 打喷嚏是什么原因引起的| 吃什么增强免疫力| 蒙脱石散适合什么腹泻| 什么人容易得心肌炎| 百度
资讯 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

3月16日译名发布:Robert Fico}

百度 (樊诗)[责任编辑:陈城]


本文档介绍了金融级APP实名认证方案Android端APP集成开发流程。

一、运行示例工程

1、Demo运行

从控制台下载示例工程包之后,先将AndroidManifest.xml中的com.baidu.idl.face.demo.liantian.ac.provider修改为您的包名,build.gradle中的applicaitonId.liantian.ac.provider。然后在build.gradle中配置好包名和签名。

android {
    defaultConfig {
        ...
        applicationId "申请时的包名"
        ...
    }
    signingConfigs {
        def password = "替换为签名密码"
        def alias = "替换为签名别名"
        def filePath = "替换为签名文件路径"
        keyAlias alias
        keyPassword password
        storeFile file(filePath)
        storePassword(password)
    }
    release {
        keyAlias alias
        keyPassword password
        storeFile file(filePath)
        storePassword(password)
    }
}

2、SDK集成

首先在app工程中导入demo工程中的faceplatform-ui 模块、lib-liantian模块,ocr_ui模块(如果需要使用OCR身份证识别能力,则需要导入,不需要则不导入)。

在app工程的build.gradle中添加依赖,引入faceplatform-ui和ocr_ui依赖,然后sync。

dependencies {
   compile project(': faceplatform-ui)
   compile project(': ocr_ui)
}

3、授权文件、加密文件

请将创建App方案时获取的人脸授权文件(idl-license.face-android)、加密文件(idl-key.face-android)放置于Assets目录下。如果使用OCR身份证识别功能,请将OCR身份证识别授权文件(aip.license)也放置于Assets目录下。

二、安全人脸SDK接口

1、隐私协议接口

用户同意隐私协议之后调用此接口,在同意隐私协议前,所有人脸能力的调用均会失败,直到同意了隐私协议。

void LH.setAgreePolicy(Context context, boolean agree)

-参数说明

agree:用户是否同意了隐私协议,true为同意,false为不同意。

2、安全能力初始化接口

在开始采集人脸的流程前,调用安全能力初始化接口。请保证在调用此方法之前请确认setAgreePolicy方法已经调用,并且agress为true,否则采集流程将无法启动。

void LH.init(Context context, String licenseId);

-参数说明

licenseId:Face为App分配的许可Id,在AI开放平台创建App时获取。

3、人脸能力初始化接口

在开始采集人脸的流程前,调用人脸能力初始化接口。请保证在调用此方法之前LH.init方法已经调用。

FaceSDKManager.getInstance().initialize(mContext, Config.licenseID,
        Config.licenseFileName, new IInitCallback() {
            @Override
            public void initSuccess() {}

            @Override
            public void initFailure(final int errCode, final String errMsg) {
                runOnUiThread(new Runnable() {});
            }
        });

-参数说明:

licenseId:Face为App分配的许可Id,在AI开放平台创建App时获取。

licenseFileName:Face为App分配的授权文件名称,默认名称为idl-license.face-android。

new IInitCallback():见“初始化IInitCallback回调接口”。

4、初始化IInitCallback回调接口

人脸能力初始化接口回调,错误码和错误信息如下表。

错误码 说明
SUCCESS(0) 用户取消操作
LICENSE_NOT_INIT_ERROR(1) license未初始化
LICENSE_DECRYPT_ERROR(2) license数据解密失败
LICENSE_INFO_FORMAT_ERROR(3) license数据格式错误
LICENSE_KEY_CHECK_ERROR(4) license-key校验错误
LICENSE_ALGORITHM_CHECK_ERROR(5) 算法ID校验错误
LICENSE_MD5_CHECK_ERROR(6) MD5校验错误
LICENSE_DEVICE_ID_CHECK_ERROR(7) 设备ID校验错误
LICENSE_PACKAGE_NAME_CHECK_ERROR(8) 包名(应用名)校验错误
LICENSE_EXPIRED_TIME_CHECK_ERROR(9) 过期时间不正确
LICENSE_FUNCTION_CHECK_ERROR(10) 功能未授权
LICENSE_TIME_EXPIRED(11) 授权已过期
LICENSE_LOCAL_FILE_ERROR(12) 本地文件读取失败
LICENSE_REMOTE_DATA_ERROR(13) 远程数据拉取失败
LICENSE_LOCAL_TIME_ERROR(14) 本地时间校验错误
OTHER_ERROR(other) 其他错误

5、人脸配置

设置配置参数,如不设置,将使用默认值。

人脸配置通过console平台下发,可以参考demo工程assets目录下的console_config.json文件,相关配置代码参考demo的app模块。

FaceConfig config = FaceSDKManager.getInstance().getFaceConfig();
FaceSDKManager.getInstance().setFaceConfig(config);

6、人脸采集流程(SurfaceView实现)

该方法是异步方法,调用后执行炫彩活体采集流程,该流程需要一个在界面显示的SurfaceView实现。可以参考demo的faceplatform-ui模块。

boolean LH.startFaceSurfaceLiveness(Activity activity,SurfaceHolder previewSurfaceHolder, FaceProcessCallback callback, int deviceCheckTimeout)

-参数说明:

activity:执行人脸采集的Activity。

previewSurfaceHolder:用于展示摄像头预览的SurfaceView的Holder。

processCallback:流程回调,见“FaceProcessCallback接口”。

deviceCheckTimeout:安全检测超时时间,此处需要传0,开启后台检测,传-1则跳过检测。

-返回值说明:

若本方法返回false,则流程启动失败,此时传入的callback对象的onEnd方法会回调失败原因。

7、人脸采集流程(TextureView实现)

该方法是异步方法,调用后执行炫彩活体采集流程,该流程需要一个在界面显示的TextureView实现。可以参考demo的faceplatform-ui模块。

boolean LH. startFaceTextureLiveness(Activity activity,                                               TextureView previewTextureView, FaceProcessCallback callback, int deviceCheckTimeout, IFaceProcessInfo info, boolean record)

-参数说明:

activity:执行人脸采集的Activity。

TextureView:用于展示摄像头预览的TextureView。

processCallback:流程回调,见“采集回调FaceProcessCallback接口”。

deviceCheckTimeout:安全检测超时时间,此处需要传0,开启后台检测,传-1则跳过检测。

record:是否进行视频录制,若否,则onEnd返回的RequestInfo中path为null,若是,该path字段为加密视频文件的路径。注意,本SDK不负责删除该文件,请在使用后删除该加密视频文件,以免硬盘被过度占用。

-返回值说明:

若本方法返回false,则流程启动失败,此时传入的callback对象的onEnd方法会回调失败原因。

8、采集回调FaceProcessCallback接口

回调类,回调方法顺序随人脸采集流程自上向下:

(1)onDeviceCheckResult (int status)

回调设备风险检测结果。无风险或未知风险会进入人脸采集流程,若有风险,则不会进行人脸采集流程。此回调方法return后,会直接回调onEnd方法。

status:1代表无风险,-1代表有风险。

(2)回调人脸采集过程的阶段性结果,供APP刷新界面。

status:按FaceStatusNewEnum的枚举值返回的当前状态。

message:需要在界面展示的提示。

livenessScore:活体检测分数。

onCollectCompletion(FaceStatusNewEnum status, String message,                         HashMap<String, ImageInfo> base64ImageCropMap, HashMap<String, ImageInfo> base64ImageSrcMap,int currentLivenessCount,float livenessScore);

(3)onEnd (int status,RequestInfo info)

必有,包括被Cancel的情况,回调流程结束事件。

status:1代表正常结束, <0的值均表示未正常结束。

info:只有在正常结束时有值,其他情况为null。本对象包含sKey,xDeviceId,data和path共4个字段。其中,sKey, xDeviceId为校验用,data为安全相关数据(该数据包含采集的最终图像,以及解密视频文件的必要信息),path为最终加密后的视频文件(仅在Texture实现的活体采集流程,开启录像功能时有值)。请按需使用这些数据。

onEnd的部分status值列举如下:

错误码 说明
1 正常结束,返回云端验证结果
-1 已经有一个采集验证流程在运行
-2 云端验证过程异常
-3 风控验证失败
-4 更严格情形下的风控验证失败
-5 摄像头异常
-6 流程被取消
-7 线程异常
-8 筛选图像异常
-9 采集前流程异常
-10 活体验证步骤异常
-11 预览异常
-12 采集后流程异常
-13 安全能力未初始化
-14 未同意隐私协议
-15 未成功加载安全模块
-17 录制异常
-18 未检出人脸超时
-19 网络异常
-20 炫彩异常
-21 活体分数异常

9、取消正在进行的流程

取消正在进行的人脸采集流程。调用此接口后,取消整个流程。请在Activity的onPause中调用此方法,保证界面离开顶端时流程被取消。下次进入界面应当重新开始人脸验证过程,可以参考demo的faceplatform-ui模块。

void LH.cancelFaceProcess()

10、采集过程中设置语音开关

设置是否开启人脸采集过程的语音提示。只有采集过程中可以通过此方法开启或关闭语音提示。采集前调用此方法不会生效。可以参考demo的faceplatform-ui模块。

void LH.setSoundEnable (boolean enable)

11、OCR身份证初始化

如果需要使用OCR身份证能力,需要对OCR能力进行初始化。可以参考demo的app模块。

OCR.getInstance(this).initAccessToken(new OnResultListener<AccessToken>() {
    @Override
    public void onResult(final AccessToken result) {
    }

    @Override
    public void onError(final OCRError error) {
    }
}, getApplicationContext());

12、OCR身份证在线识别

调用recognizeIDCard进行身份证在线识别,可参考demo的ocr_ui模块。

OCR.getInstance(this).recognizeIDCard(param, new OnResultListener<IDCardResult>() {
    @Override
    public void onResult(final IDCardResult result) {}
    
    @Override
    public void onError(final OCRError error) {}
});

三、采集流程

1、正常采集流程

调用startFaceSurfaceLiveness或startFaceTextureLiveness -> onBegin被回调 -> 设备环境扫描 -> onDeviceCheckResult被回调-> onBeginCollectFaceInfo被回调 -> 开启摄像头(需要保证SurfaceView或TextureView为可见状态) -> onConfigCamera被回调,用户配置摄像头 -> 开始预览 -> onCollectCompletion被回调(多次,需要更新界面,最后一次回调status为OK或DetectRemindCodeTimeout)-> onBeginBuildData 被回调 -> onEnd被回调。

2、异常采集流程

onEnd可能在onBegin后的任何时间被回调,其他中间步骤可能会缺失。此种情况下,onEnd会回调错误码。

四、代码混淆

-keep class com.baidu.idl.* { ; }

-dontwarn com.baidu.vis.**

-keep class com.baidu.vis.* { ; }

-dontwarn com.baidu.liantian.**

-keep class com.baidu.sofire.* { ; }

-dontwarn com.baidu.baidusec.**

-keep class com.baidu.baidusec.* { ; }

-dontwarn com.baidu.ocr.**

-keep class com.baidu.ocr.* { ; }

五、注意事项

1、如果之前接入过百度人证核验SDK,如何升级?

删除faceplatform模块和faceplatform-ui模块,然后重新导入demo工程中的faceplatform-ui模块、lib-liantian模块,ocr_ui模块(如果需要使用OCR身份证识别能力,则需要导入),可以参考新版本demo。

2、demo配置完签名和包名之后,运行报错

Manifest merger failed : Attribute provider#com.baidu.liantian.LiantianProvider@authorities value=(com.baidu.idl.face.demo.liantian.ac.provider) from AndroidManifest.xml

将com.baidu.idl.face.demo.liantian.ac.provider修改为您的包名(build.gradle中的applicaitonId).liantian.ac.provider

3、人脸能力初始化的时候,报错初始化失败 = 13 -->local auth failed:6

请确认是否使用了AI开放平台控制台配置的包名、以及签名文件。

4、采集回调FaceProcessCallback接口onEnd方法返回-15,如何处理?

可以在进入人脸界面之前,通过FH.isInitSuc(1)来判断安全模块是否下载成功,如果没有下载成功,建议用户切换网络后尝试。

5、不使用视频录制,如何操作?

视频录制会将活体动作视频的留存在本地,如果使用此视频需要上传到服务端解密。如果不使用直接跳转到不到视频录制的界面即可。

6、如果不想使用OCR身份证识别能力,怎么操作?

不使用OCR身份证识别能力,不需要导入ocr_ui模块,也不需要对OCR能力进行初始化,不需要向工程中放置OCR识别的授权文件。

7、OCR身份证识别初始化的时候,报错初始化失败 = [283502] App identifier unmatch

请确认是否使用了控制台创建应用时配置的文字识别包名、以及签名文件。

8、通过客户端demo如何进行人脸对比/人证核验/在线活体?

因为客户端demo需要配合服务端demo使用,app客户端通过人脸SDK采集人脸数据后,上传app服务端,app服务端通过ak、sk请求百度服务器,返回结果。人脸对比/人证核验/在线活体接口请前往方案集成前准备下载服务端示例工程及文档。

上一篇
iOS-方案集成指南
下一篇
标准级H5端实名认证方案
单宁是什么意思 矢气是什么意思 稀料是什么 女人没经验开什么店好 爱出汗吃什么药好
眼珠子疼是什么原因 什么食物热量高 流鼻血是什么原因 检查hpv需要注意什么提前注意什么 脂肪浸润是什么意思
低钾有什么症状和危害 国防部长有什么权利 奶水不足吃什么 六月十七是什么星座 bb霜和粉底液有什么区别
酚妥拉明是什么药 钠氯偏低是什么原因 一什么尾巴 脸上长闭口是什么原因导致的 男生下面长什么样
热水器什么牌子好hcv7jop9ns5r.cn 痈疽是什么意思hcv8jop6ns4r.cn 怀孕的最佳时间是什么时候hcv8jop8ns0r.cn 血稠吃什么药hlguo.com 双性人什么意思chuanglingweilai.com
pumpkin是什么意思hcv9jop4ns3r.cn 马骝是什么意思hcv7jop5ns2r.cn 进入icu病房意味着什么hcv8jop2ns4r.cn 不安是什么意思hcv8jop4ns0r.cn 为什么会得尿毒症hcv9jop4ns1r.cn
坐阵是什么意思hcv8jop4ns8r.cn 头顶出汗是什么原因hcv7jop5ns1r.cn 壁虎代表什么生肖hcv9jop4ns3r.cn 快走对身体有什么好处jingluanji.com 车辙是什么意思hcv8jop8ns2r.cn
五花八门是什么意思hcv8jop8ns8r.cn 经常发低烧是什么原因hcv8jop7ns4r.cn 板鞋配什么裤子好看hcv9jop8ns3r.cn 勃起功能障碍吃什么药hcv9jop5ns0r.cn 宝宝拉肚子挂什么科hcv9jop0ns1r.cn
百度