更新记录
6.3.3(2024-06-27)
【新增】Android端支持在人脸采集页显示提示框,新增showDialog
和closeDialog
方法,具体使用参考文档
6.3.2(2024-06-17)
【新增】Android端新增连续识别功能,可设置isContinueLive=true
来开启,继续识别调用continueLive
函数,关闭调用closeLive
函数
6.3.1(2024-05-31)
【优化】Android端内置的申请权限依赖更新至最新版
查看更多平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:5.1 - 14.0 | armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 | 适用版本区间:9 - 17 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
插件功能概述
- 支持自定义提示文字颜色、人像框颜色及采集页面背景色
- 支持设置相机,可配置使用前置或后置摄像头
- 支持配置是否启用提醒音
- 支持自定义人脸检测页面相关图片(如:关闭按钮图片、关闭开启提醒音图片)
- 支持用户主动关闭回调(用户点击关闭按钮、虚拟返回键、手势返回都会触发)
- 支持返回百度抠图过的人像图片
- 支持返回原图人脸照片和采集过程中的原图照片
新版新特性
- 支持针对不同分辨率设备人脸拉伸问题的兼容
- 支持前/后摄像头无动作人脸采集
- 支持自定义文字提示,满足特殊的产品需求
- 支持自定义语音文件,让产品走到海外
新版新特性
- 支持戴口罩采集,可配置是否开启戴口罩采集
新版新特性
- 采集的图片无黑边
新版新特性
- 支持SDK初始化状态监听,可以自定义弹窗,更加完美的用户体验
新版新特性
- 全新的UI设计,更好的用户体验
新版新特性
- 支持自定义人脸采集时的相关质量控制,具体参考请
quality_config.json
说明v4.1.1新增
- 支持自定义人脸采集超时时间
v4.1.1新增
- 支持平板设备采集
v4.1.1新增
- 支持Android/IOS双平台,IOS端功能与Android端保持一致
v5.1.1起支持IOS
- 支持在采集页面切换前后摄像头,可以通过
switchCameraEnable
属性控制是否开启此功能v5.3.1新增
- 支持自定义采集完成之后是否关闭采集页面
v5.4.4新增
- 支持图片压缩,可以把图片大小控制在150KB以下
v5.6.6新增
- 支持自定义相机预览画面宽高,适配特殊机型人脸预览变形问题
v5.7.8新增
- 支持自定义图片压缩大小
v5.8.8新增
- 支持base64图片转本地图片路径,方便用户将人脸图片上传至自己的服务器
v6.0.1新增
- Android端支持自定义相机预览旋转角度
v6.1.9新增
- Android端支持连续识别功能,适用于非手机设备
v6.3.2新增
- Android端支持在采集页弹出提示框
v6.3.3新增
- 待完善功能,敬请期待!
插件接入文档
关于更新
有空闲时间会不断更新维护,有问题随便提,有时间一定会修改
特别推荐
- 结合OCR文字识别插件
支持身份证正反自动识别
,可以轻松实现实名认证,身份核验等功能- 插件1【支持Android/IOS/平板设备/身份证自动识别】:https://ext.dcloud.net.cn/plugin?id=2752
- 插件2【支持Android/IOS/平板设备/所有类型均支持自动识别(身份证、银行卡、车牌号、驾驶证等)】:https://ext.dcloud.net.cn/plugin?id=4243
- 如果您用于非手机设备(如一体机设备、双目摄像头设备等),推荐您使用老版本插件
- 【支持Android/IOS】:https://ext.dcloud.net.cn/plugin?id=2681
注意事项
- 一定一定一定要使用正式版的license文件,一定要等正式版的审核通过之后使用正式版的,不要用测试版的license文件,否则造成不可逆的后果自行负责!!!
- 使用该插件时一定要先试用测试,如果不会搞的可以加群,群里有完整的测试demo,虚拟物品一旦购买之后无法退款!!!
准备工作
- Android、ios端证书准备工作
- 1) Android端:准备应用的Android打包文件.jks文件并获取MD5。参考:https://ask.dcloud.net.cn/article/35777
- 2) IOS端:这里只简单介绍一下windows系统下如何创建ios证书,如果你是mac系统,直接百度搜索就行,网上一堆教程,windows证书申请教程参考:https://www.pianshen.com/article/59121497532/
- 百度官方资料准备
- 1) 进入百度人脸识别官网点击这里
- 2) 点击右上角的控制台,登陆百度账号(没有的自行注册,注意:如果是公司项目使用,请让公司申请账号并认证为企业账号),进入控制台
- 3) 选择人脸识别 --> 人脸实名认证 --> 项目管理 --> 进行企业认证 ---> 新建项目
- 获取licenseID(例:您的授权标识为:
test
,则android端的licenseID就是test-face-android
,ios也是同理)- 1) android:licenseID =
授权标识-face-android
- 2) ios:licenseID =
授权标识-face-ios
- 1) android:licenseID =
接入步骤
最简单的接入步骤(基本10分钟搞定)
- step1:扫描上方QQ群二维码加入QQ群,下载对应Deom的ZIP压缩包,本插件demo为
liyahong-BDFace-v4-Demo
- step2:解压完成之后会看到很多文件和文件夹,你在桌面新建一个文件夹(
最好英文命名哦
),然后把你解压到的文件和文件夹拷贝到你创建的这个文件夹下 - step3:打开hx,然后依次选择
文件 --> 导入 --> 从本地目录导入 --> 选择刚才在桌面创建的文件夹 --> 导入成功
- step4:打开导入的项目,然后打开
manifest.json
文件,重新获取appid,或者填写你项目的appid都可以 - step5:回到插件页面,看右边有个
试用
的按钮,点它,然后弹出来一个模态框,选择试用的项目,点击确认按钮 - step6:回到hx,然后再次打开
manifest.json
文件,然后依次选择App原生插件配置 --> 云端插件 --> 选择云端插件 --> 勾选【Android/IOS支持/口罩识别】的插件
- step7:替换
license文件
,详细操作看详细接入步骤的第2条
- step8:打开
pages下的index.vue文件
,把里面的licenseID
替换为你的 - step9:打自定义基座包运行测试(
包名一定要跟你在百度后台创建license文件的包名保持一致
),详细操作看详细接入步骤的第9条及以后
详细接入步骤
-
点击试用插件,选择要试用的项目,获取试用资格,测试没问题之后确定插件功能符合您的产品需求再考虑购买。
-
在uni-app项目根目录创建nativeplugins文件夹,然后依次在nativeplugins文件夹下创建以下文件夹,并将刚才下载下来的License授权文件放入以下文件夹下,
注意:一定不要修改license文件的名字,否则将会导致初始化SDK失败
- 1) Android端放置目录:
nativeplugins --> liyahong-BDFace-v4 --> android --> assets
- 2) IOS端放置目录:
nativeplugins --> liyahong-BDFace-v4 --> ios
- 1) Android端放置目录:
-
自定义资源图片(
说明:插件内置的有图片资源,如果不需要更换就无需配置此项
),需要将图片文件放置以下目录,注意:图片文件名一定要按照文档中命名规范命名,否则不会生效
,文件名见下方自定义图片尺寸说明
- 1) Android端放置目录:
nativeplugins --> liyahong-BDFace-v4 --> android --> res --> mipmap-xxhdpi
- 2) IOS端放置目录:
nativeplugins --> liyahong-BDFace-v4 --> ios --> FaceSDKImage.bundle
- 1) Android端放置目录:
-
自定义语音提醒文件(
说明:插件内置的有语音提醒文件,如果不需要更换就无需配置此项
),需要将语音文件放置以下目录,注意:语音文件名一定要按照文档中命名规范命名,否则不会生效
,文件名见下方自定义语音文件说明
- 1) Android端放置目录:
nativeplugins --> liyahong-BDFace-v4 --> android --> res --> raw
- 2) IOS端放置目录:
nativeplugins --> liyahong-BDFace-v4 --> ios --> com.baidu.idl.face.faceSDK.bundle
- 1) Android端放置目录:
-
自定义质量属性,需要下载示例demo,然后找到
quality_config.json
文件,将该文件放到自己项目的对应文件夹
中,注意:一定要按照demo中命名规范命名,否则不会生效
,然后打开文件,修改对应的质量控制属性值即可,属性值参考下方说明- 1) Android端放置目录:
nativeplugins --> liyahong-BDFace-v4 --> android --> assets
- 2) IOS端放置目录:
nativeplugins --> liyahong-BDFace-v4 --> ios
- 1) Android端放置目录:
-
点击manifest.json --> App 原生插件配置 --> 云端插件 --> 勾选插件对应的插件
-
使用插件,传入licenseID(必填),其他参数可以不填
-
1) 插件方法说明
- liveFace(object, function) 人脸采集方法
- continueLive(function) 继续人脸采集方法,仅
isContinueLive=true
时调用有效,如需关闭采集页面需手动调用closeLive
方法v6.3.2新增
- closeLive(function) 关闭人脸采集页面方法,仅
resultBackEnable=false
时调用有效,如需关闭采集页面需手动调用closeLive
方法 - compressBase64Image(object, function) base64图片压缩方法,可以将图片压缩到150KB以下,具体说明见下
v5.6.6新增
- base64ToFile(object, function) base64数据转图片方法,可以将base64数据转换为本地图片,并返回本地路径
v6.0.1新增
- showDialog(object, function) 在人脸采集页显示提示框方法,如需换行使用
\r\n
,调用closeDialog
方法关闭弹窗v6.3.3新增
- closeDialog(function) 关闭人脸采集页弹窗方法
v6.3.3新增
compressBase64Image
方法说明参数说明
属性 类型 默认值 必填 说明 base64 string 无 是 需被压缩的base64数据,不带前缀 compressSize int 150 否 期望压缩大小,单位KB v5.8.8新增
返回值说明
属性 返回值说明 code 【必填】状态码 msg 【必填】提示信息 result 【选填】压缩结果,当code==1时必填 result
说明属性 属性说明 base64 【选填】压缩后的base64数据,不带前缀 originalSize 【选填】原图大小,单位byte compressedSize 【选填】压缩后的图片大小,单位byte
base64ToFile
方法说明参数说明
属性 类型 默认值 必填 说明 base64 string 无 是 需转换的base64数据,不带前缀 返回值说明
属性 返回值说明 code 【必填】状态码 msg 【必填】提示信息 result 【选填】转换路径,当code==1时必填
showDialog
方法说明参数说明
属性 类型 默认值 必填 说明 content string 无 是 需要提示的内容,如需换行使用 \r\n
-
2)
liveFace
方法参数说明文档
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
licenseID | string | 无 | 是 | licenseID与百度资料上的一致 |
liveArray | array | [] | 否 | 活体动作数组,详细见活体动作说明 ,如:['Month'] |
liveRandom | boolean | false | 否 | 活体动作是否随机 |
sound | int | 0 | 否 | 是否开启提醒音,0:有声,1:无声 |
camera | int | 0 | 否 | 前置/后置摄像头,0:前置,1:后置 |
openMask | boolean | false | 否 | 是否开启戴口罩采集 |
hintTextColor | string | #333333 | 否 | 提示文字颜色 |
backgroundColor | string | #FFFFFF | 否 | 采集页面背景色 |
roundColor | string | #CCCCCC | 否 | 人像框默认颜色 |
roundSelectColor | string | #FF0000 | 否 | 识别成功时,采集框的颜色 |
copyright | string | '' | 否 | 采集页面底部版权文字内容 |
copyrightColor | string | '#CCCCCC' | 否 | 采集页面底部版权文字颜色 |
showBottomImage | boolean | false | 否 | 是否显示采集页面底部背景图片 |
otherImage | boolean | false | 否 | 是否回调经过百度抠图的人像图片 |
originalImage | boolean | false | 否 | 是否返回采集过程中的原图人像照片 |
qualityLevel | int | 0 | 否 | 质量等级,0:正常(normal)、1:宽松(loose)、2:严格(strict),质量控制属性参考quality_config.json 文件v4.1.1新增 |
detectTimeOut | int | 15 | 否 | 采集超时时间,单位(秒)v4.1.1新增 |
switchCameraEnable | boolean | false | 否 | 是否开启切换摄像头功能,设置为true则会在右上角多一个切换摄像头按钮v5.3.1新增 |
tipsModel | object | {} | 否 | 自定义每个状态的提示文字内容 |
resultBackEnable | boolean | true | 否 | 采集完成之后是否直接返回,如果设置false,采集完成之后将不会返回,需要js端调用closeLive() 方法来关闭采集页面,详情参考demo或文档v5.4.4新增 |
width | int | 0 | 否 | 自定义预览画面宽度v5.7.8新增(IOS不支持) |
height | int | 0 | 否 | 自定义预览画面高度v5.7.8新增(IOS不支持) |
soundEnable | boolean | true | 否 | 是否显示声音按钮v5.9.8新增 |
cameraDegree | int | 否 | 相机预览角度取值(0、90、180、270) ,如果发现预览角度不对,可以设置此属性(一般用于非手机设备)v6.1.9新增(IOS不支持) |
|
cameraWidthRatio | int | 0.33 | 否 | 识别框宽度比例,一般用于非手机设备,如果出现人脸框过大可以设置此属性,值越大框越小v6.2.7新增(IOS不支持) |
cameraHeightRatio | int | 0.1 | 否 | 识别框高度比例,一般用于非手机设备,如果出现人脸框过大可以设置此属性,值越大越朝上v6.2.7新增(IOS不支持) |
translateCanvas | boolean | false | 否 | 是否交换识别框宽高,一般用于非手机设备,如果出现人脸框过大可以设置为truev6.2.7新增(IOS不支持) |
disableGooglePermission | boolean | false | 否 | 是否禁止google不允许的权限(如需上架google商店可设置该属性为true)v6.2.8新增(IOS不支持) |
isContinueLive | boolean | false | 否 | 是否开启连续识别,开启后需调用continueLive 方法进行继续采集,可调用closeLive 方法关闭v6.3.2新增(IOS不支持) |
- 3) 活体动作说明
动作值 | 说明 |
---|---|
Eye | 眨眨眼 |
Mouth | 张张嘴 |
HeadLeft | 向左缓慢转头 |
HeadRight | 向右缓慢转头 |
HeadUp | 缓慢抬头 |
HeadDown | 缓慢低头 |
- 4)
quality_config.json
文件配置说明,0:正常(normal
)、1:宽松(loose
)、2:严格(strict
)
属性 | 类型 | 默认值 | 说明 |
---|---|---|---|
minIllum | int | 正常: 40, 宽松: 30, 严格: 60 | 最小光照阈值(取值 0~255) |
maxIllum | int | 正常: 220, 宽松: 240, 严格: 200 | 最大光照阈值(取值 0~255) |
leftEyeOcclusion | float | 正常: 0.8, 宽松: 0.95, 严格: 0.4 | 左眼遮挡阈值(取值 0~1.0) |
rightEyeOcclusion | float | 正常: 0.8, 宽松: 0.95, 严格: 0.4 | 右眼遮挡阈值(取值 0~1.0) |
noseOcclusion | float | 正常: 0.8, 宽松: 0.95, 严格: 0.4 | 鼻子遮挡阈值(取值 0~1.0) |
mouseOcclusion | float | 正常: 0.8, 宽松: 0.95, 严格: 0.4 | 嘴巴遮挡阈值(取值 0~1.0) |
leftContourOcclusion | float | 正常: 0.8, 宽松: 0.95, 严格: 0.4 | 左脸颊遮挡阈值(取值 0~1.0) |
rightContourOcclusion | float | 正常: 0.8, 宽松: 0.95, 严格: 0.4 | 右脸颊遮挡阈值(取值 0~1.0) |
chinOcclusion | float | 正常: 0.8, 宽松: 0.95, 严格: 0.4 | 下巴遮挡阈值(取值 0~1.0) |
pitch | int | 正常: 20, 宽松: 30, 严格: 15 | 低头抬头角度(取值 0~45) |
yaw | int | 正常: 18, 宽松: 18, 严格: 15 | 左右摇头角度(取值 0~45) |
roll | int | 正常: 20, 宽松: 30, 严格: 15 | 偏头角度(取值 0~45) |
blur | float | 正常: 0.6, 宽松: 0.8, 严格: 0.4 | 模糊度阈值(取值 0~1.0) |
- 5) 自定义提示文字说明【
tipsModel
的属性】
属性 | 类型 | 默认值 |
---|---|---|
detect_face_in | string | 请把脸移入框内 |
detect_zoom_in | string | 请将脸部靠近一点 |
detect_zoom_out | string | 请将脸部离远一点 |
detect_head_up | string | 请略微抬头 |
detect_head_down | string | 请略微低头 |
detect_head_left | string | 请略微向左转头 |
detect_head_right | string | 请略微向右转头 |
detect_occ_left_eye | string | 左眼有遮挡 |
detect_occ_right_eye | string | 右眼有遮挡 |
detect_occ_nose | string | 鼻子有遮挡 |
detect_occ_mouth | string | 嘴部有遮挡 |
detect_occ_left_check | string | 左脸颊有遮挡 |
detect_occ_right_check | string | 右脸颊有遮挡 |
detect_occ_chin | string | 下巴有遮挡 |
detect_low_light | string | 请使环境光线再亮些 |
detect_keep | string | 请握稳手机,视线正对屏幕 |
detect_timeout | string | 检测超时 |
detect_left_eye_close | string | 左眼未睁开 |
detect_right_eye_close | string | 右眼未睁开 |
liveness_eye | string | 眨眨眼 |
liveness_mouth | string | 张张嘴 |
liveness_head_left | string | 向左缓慢转头 |
liveness_head_right | string | 向右缓慢转头 |
liveness_head_up | string | 缓慢抬头 |
liveness_head_down | string | 缓慢低头 |
liveness_good | string | 非常好 |
- 6) 自定义图片尺寸说明
图片名称 | 建议尺寸 | 图片格式 | 说明 |
---|---|---|---|
lyh_bdface_back | 66*66 | png | 关闭按钮图片 |
lyh_bdface_close_sound | 66*66 | png | 关闭提醒音图片 |
lyh_bdface_open_sound | 66*66 | png | 打开提醒音图片 |
lyh_bdface_switch_camera | 66*66 | png | 切换摄像头图片 |
-
7) 自定义语音文件说明
注意:语音文件必须控制在2s之内,否则会影响识别效率
-
注意:
这里为了兼容老用户,Android端与IOS端的文件名不一样,注意区分,感谢各位的理解!
-
Android端
文件名称 | 语音文件时长 | 文件格式 | 原文件语音内容 |
---|---|---|---|
lyh_bdface_detect_face_in | 2s | mp3 | 把脸移入框内 |
lyh_bdface_liveness_eye | 2s | mp3 | 眨眨眼 |
lyh_bdface_liveness_mouth | 2s | mp3 | 张张嘴 |
lyh_bdface_liveness_head_left | 2s | mp3 | 向左缓慢转头 |
lyh_bdface_liveness_head_right | 2s | mp3 | 向右缓慢转头 |
lyh_bdface_liveness_head_up | 2s | mp3 | 缓慢抬头 |
lyh_bdface_liveness_head_down | 2s | mp3 | 缓慢低头 |
- IOS端
文件名称 | 语音文件时长 | 文件格式 | 原文件语音内容 |
---|---|---|---|
moveface | 2s | mp3 | 把脸移入框内 |
blink | 2s | mp3 | 眨眨眼 |
open_mouth | 2s | mp3 | 张张嘴 |
turn_left | 2s | mp3 | 向左缓慢转头 |
turn_right | 2s | mp3 | 向右缓慢转头 |
head_up | 2s | mp3 | 缓慢抬头 |
head_down | 2s | mp3 | 缓慢低头 |
- 8) 代码示例
const bdFaceLive = uni.requireNativePlugin('liyahong-BDFace-v4')
var resultBackEnable = true
let licenseID = plus.os.name == 'Android' ? 'lyhBDFace-face-android' : 'lyhBDFace-face-ios'
// 调用插件开始采集人脸
bdFaceLive.liveFace({
licenseID: licenseID, // 必填项,与百度资料上的License ID保持一致
/**
* Eye: 眨眨眼
* Mouth: 张张嘴
* HeadLeft: 向左缓慢转头
* HeadRight:向右缓慢转头
* HeadUp:缓慢抬头
* HeadDown:缓慢低头
*
* 默认无动作,如果填写了会按照指定动作执行
* 注意:这里跟老版的不一样,更符合用户需求
*/
liveArray: ['Mouth', 'HeadLeft', 'HeadRight'], // 选填【活体动作】
liveRandom: true, // 选填【动作是否随机】,默认有序,false:有序|true:随机
sound: 1, // 选填【是否有声】,默认有声,0:有声|1:无声
camera: 0, // 选填【前置|后置摄像头】,默认前置,0:前置|1:后置
openMask: true, // 选填【是否开启戴口罩采集】,默认false不开启
hintTextColor: '#333333', // 选填【提示文字颜色】,默认#333333
backgroundColor: '#FFFFFF', // 选填【页面背景颜色】,默认#FFFFFF
roundColor: '#CCCCCC', // 选填【人脸采集框颜色】,默认#666666
roundSelectColor: '#FF0000' ,// 选填【识别成功时采集框的颜色】,默认#FF0000
copyright: '', // 选填【底部版权文字内容】,默认''
copyrightColor: '#0094FF', // 选填【底部版权文字颜色】,默认#CCCCCC
showBottomImage: false, // 选填【是否显示底部背景图片】,默认false
otherImage: false, // 选填【是否返回动作人像信息】,默认false,true:返回base64ImageResult + otherBase64Image,false:只返回base64ImageResult
originalImage: false, // 选填【是否返回原图照片信息】,默认false,true:返回base64ImageResult + originalBase64Image,false:只返回base64ImageResult
/**
* 0:正常(normal)、1:宽松(loose)、2:严格(strict)
* 可以通过quality_config.json配置相关质量属性,具体属性介绍参考文档
*/
qualityLevel: 0, // 选填【质量等级】,默认0
detectTimeOut: 15, // 选填【采集超时时间】,默认15,单位(秒)
/**
* 如果设置为true,页面右上方会多一个相机切换功能入口
* 您如果想自定义图片,可以参考文档中的自定义图片说明
*/
switchCameraEnable: false, // 选填【是否开启相机切换功能】,默认false
/**
* 如果你希望采集完成之后,需要前端处理完成之后再返回的话,可以将此属性设置为false
* 需注意:设置为false之后插件将不会调用关闭页面方法,需要前端手动调用插件的closeLive()方法完成关闭识别页面操作
*/
resultBackEnable: resultBackEnable, // 选填【采集完成之后是否返回】,默认true
tipsModel: {}, // 选填【自定义提示文字内容】,取值可参考文档,不填则使用插件默认提示
/**
* width 和 height属性是用来设置人脸采集预览画面的宽高的
*
* 1、如果您仅用于手机端采集的话,插件内部已经对所有手机端进行了适配,此属性无需理会,直接设置0即可
* 2、如果您将插件用于平板设备、厂商定制机设备、快递员扫码设备可能会出现预览框人脸被拉伸的情况,
* 此时您可以来设置width 和 height属性来进行特定的适配,一般设置为width:1080,height:1920即可,
* 具体根据设备分辨率来设置
*/
width: 0, // 选填【自定义预览画面宽度】,默认值0
height: 0, // 选填【自定义预览画面高度】,默认值0
soundEnable: true, // 选填【是否显示声音图片】默认值:true
cameraWidthRatio: 0.33, // 选填【识别框宽度比例,一般用于非手机设备,如果出现人脸框过大可以设置此属性,值越大框越小】,默认值0.33
cameraHeightRatio: 0.1, // 选填【识别框高度比例,一般用于非手机设备,如果出现人脸框过大可以设置此属性,值越大越朝上】,默认值0.1
translateCanvas: false, // 选填【是否交换识别框宽高,一般用于非手机设备,如果出现人脸框过大可以设置为true】,默认值false
isContinueLive: false // 选填【是否继续识别】,默认false
}, result => {
/**
* code=1时会返回base64ImageResult
* + 如果otherImage=true,otherBase64Image也会返回
* + 如果originalImage=true,originalBase64Image也会返回
* 如果使用百度人脸比对的话建议使用base64ImageResult,这个返回的是最佳人像照片,
* 做百度人脸比对是完全没有问题的,也是百度官方推荐的
*
* otherBase64Image:经过百度抠图过的人脸照片
* originalBase64Image:人脸采集过程中的原图照片
*/
switch (result.code) {
case 1: // 人脸采集成功
// 调用插件方法进行图片压缩,压缩后的图片在150KB以下
bdFaceLive.compressBase64Image({
base64: result.base64ImageResult, // 必填【base64数据】,直接使用插件返回的base64数据即可,不要带前缀
compressSize: 150 // 选填【期望压缩大小】,默认值150,单位KB
}, compressResult => {
if (compressResult.code === 1) { // 压缩成功
// 获取压缩结果
const compressData = compressResult.result
this.faceResult = `data:image/jpg;base64,${compressData.base64}`
this.result = '人脸采集成功啦,棒棒哒!'
this.checkResultBackEnable()
}
})
return
case 2: // 跳转人脸采集页面前的回调,仅Android端支持
break
case -1: // 其他错误,如:licenseID没有配置等
break
case -2: // 活体检测超时
break
case -3: // 没有提取到人脸信息
break
case -4: // 用户主动关闭
break
case -5: // 权限申请被拒绝,仅Android端支持
if (result.never) { // 是否被永远拒绝,如果被永远拒绝需要跳转设置页让用户手动开启
this.showModal({
title: '权限受限',
msg: '您拒绝了一些权限,可能导致该服务无法正常使用,请前往设置!',
confirmText: '前往设置',
}).then(() => {
permissionUtils.gotoAppPermissionSetting()
})
} else { // 没有永远拒绝就弹窗给予提示然后再次调用插件
this.showModal({
title: '权限受限',
msg: '您拒绝了一些权限,可能导致该服务无法正常使用,请授予!'
}).then(() => {
this.scan()
})
}
break
case 100001: // 开始初始化SDK,此处如果用户网络不佳会比较耗时,为了更好的用户体验,建议设置弹窗
uni.showLoading({
title: '初始化SDK...',
mask: true
})
break
case 100002: // SDK初始化完成,如果在100001开启了弹窗,可以在这里关闭
uni.hideLoading()
break
}
this.result = JSON.stringify(result)
})
// 3.将下面两个函数复制到你的methods里面
logResult(result) {
// 最佳人像信息
console.log('base64', result.base64ImageResult)
// 百度抠图的人像信息
const otherBase64 = result.otherBase64Image
if (otherBase64) {
for (const key in otherBase64) {
console.log(key, otherBase64[key])
}
}
// 原图人像信息
const originalBase64 = result.originalBase64Image
if (originalBase64) {
for (const key in originalBase64) {
console.log(key, originalBase64[key])
}
}
},
// 此方法用于演示resultBackEnable属性为false的情况
checkResultBackEnable() {
// 如果resultBackEnable设置为false后,采集完成之后不会主动关闭识别页面
if (resultBackEnable === false) {
// 模拟网络请求,5s之后自动关闭
let number = 5
const intervalId = setInterval(() => {
if (number <= 1) {
clearInterval(intervalId)
/**
* 调用插件方法,关闭识别页面
*/
bdFaceLive.closeLive((result) => {
console.log(result)
})
} else {
number--
}
}, 1000)
}
},
/**
* 显示弹窗提示
*/
showModal({ title, msg, confirmText }) {
return new Promise((resolve, reject) => {
uni.showModal({
title,
content: msg,
showCancel: true,
confirmText: confirmText || '确认',
success(res) {
if (res.confirm) {
resolve()
} else {
reject()
}
},
fail() {
reject()
}
})
})
}
- 9) 打自定义基座,这里只演示Android的,ios需要自己去申请测试证书
-
10) 运行项目,注意:
插件返回的图片结果是base64格式
,如果需要其他处理请自行处理,建议:如果需要上传人脸图片到自己服务器上,建议直接上传base64数据给后端,让后端来转为图片,在前端转换图片会出现未知兼容问题。
-
11) result返回值说明
属性 | 返回值说明 |
---|---|
code | 【必填】状态码,说明见下 |
msg | 【必填】提示信息 |
never | 【选填】权限申请时是否选择了“拒绝且不弹出”的选项,也就是权限被永远拒绝,code=-5的时候返回 |
base64ImageResult | 【选填】最佳人脸信息,base64数据,code=1的时候返回 |
otherBase64Image | 【选填】动作人脸信息,经过百度抠图过的图片,base64数据,code=1 && otherImage=true 的时候返回 |
originalBase64Image | 【选填】动作人脸信息,未经任何处理的原图图片,base64数据,code=1 && originalImage=true 的时候返回 |
- 12) code返回值说明
状态码 | 返回值说明 |
---|---|
1 | 人脸采集成功 |
2 | 跳转人脸采集页面前的回调IOS不支持 |
-1 | 其他错误,如:licenseID没有填写等 |
-2 | 检测超时 |
-3 | 没有提取到人脸信息 |
-4 | 用户主动关闭 |
-5 | 权限申请被拒绝IOS不支持 |
100001 | 开始初始化SDK,此处如果用户网络不佳会比较耗时,为了更好的用户体验,建议设置弹窗等待,为满足特殊的产品需求,用户可以自定义弹窗 |
100002 | SDK初始化完成,如果在100001开启了弹窗,可以在这里进行关闭 |
-
13) 常见问题
- 提示SDK初始化失败是什么原因?
- android/ios目录下的license文件必须替换为你自己的
- 确定一下包名,包名一定要和你生成的license文件的包名保持一致
- 一定要打自定义基座包,然后使用自定义基座运行,否则不会包含插件包
- 打自定义基座包的时候一定要使用自有证书,不要使用公共证书文件
- 如果以上都没有问题,请确定一下licenseID是否修改成你自己的ID
- 为什么插件返回的图片不显示?
- 注意:插件返回的图片是去掉前缀的base64数据,如果要显示图片请加上前缀
- 如有不懂请下载实例demo,md文档的实例代码有些被屏蔽了
- 提示SDK初始化失败是什么原因?
-
14) 错误码对照表,
例:local auth failed:4,4就是错误码
错误码 | 错误说明 |
---|---|
1 | license未初始化 |
2 | license数据解密失败 |
3 | license数据格式错误 |
4 | licenseID不匹配 |
5 | 算法ID校验错误 |
6 | MD5校验错误 |
7 | 设备ID校验错误 |
8 | 包名(应用名)校验错误 |
9 | 过期时间不正确 |
10 | 功能未授权 |
11 | 授权已过期 |
12 | 本地文件读取失败 |
13 | 远程数据拉取失败 |
14 | 本地时间校验错误 |