更新记录
4.1.5.2(2023-01-04)
自定义采集超时UI 自定义是否显示采集提示文字和文字颜色
4.1.5.1(2023-01-03)
增加自定义UI功能 重构Android
4.1.5(2022-11-01)
百度离线人脸采集 4.1.5
查看更多平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:5.0 - 12.0 | armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 | 适用版本区间:9 - 15 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在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原生插件配置”->”云端插件“列表中删除该插件重新选择
一、重要的事说三遍 重要的事说三遍 重要的事说三遍
有问题咨询QQ群 - 838332280 支持离线版和源码版的购买 需要加群交流
适配Android-12和Android-13 适配 IOS-15和IOS-16
支持自定义UI 状态栏和标题栏多颜色渐变
一定要添加权限:
Android:
android.permission.READ_EXTERNAL_STORAGE :读取存储权限
android.permission.WRITE_EXTERNAL_STORAGE:写入存储权限
android.permission.CAMERA: 相机权限
IOS:
NSPhotoLibraryUsageDescription:是否允许App访问您的相册
NSPhotoLibraryAddUsageDescription:是否允许App访问您的相册
NSCameraUsageDescription:是否允许App访问您的相机
重点:该插件跟随百度离线人脸采集版本更新
二、项目配置
1、项目配置百度人脸采集SDK文件:
注意注意:
上图IOS证书配置目录是错误的,idl-license.face-ios
应该在ios
目录下的BundleResources
目录中
2、百度后台配置人脸采集SDK License:
3、项目调试自定义调试基座Android设置(一定要注意包名,必须跟百度后台的Android包名一致):
4、项目调试自定义调试基座IOS设置(一定要注意包名,必须跟百度后台的IOS包名一致):
三、类型配置
1、类型声明:
//活体检测动作
export enum FaceLivenessActionType {
FaceLivenessActionTypeLiveEye = 0, //眨眨眼
FaceLivenessActionTypeLiveMouth = 1, //张张嘴
FaceLivenessActionTypeLiveYawRight = 2, //向右摇头
FaceLivenessActionTypeLiveYawLeft = 3, //向左摇头
FaceLivenessActionTypeLivePitchUp = 4, //向上抬头
FaceLivenessActionTypeLivePitchDown = 5, //向下抬头
FaceLivenessActionTypeLiveYaw = 6, //摇摇头
}
//质量控制
export enum FaceSelectType {
BDFaceSelectTypeLoose = 0, //宽松
BDFaceSelectTypeNormal = 1, //正常
BDFaceSelectTypeStrict = 2, //严格
}
//标题栏字体居左中右
export enum TitleAlignment {
AlignmentLeft = 0, //居左
AlignmentCenter = 1, //居中
AlignmentRight = 2, //居右
}
export interface FaceConfig {
// (您申请的应用名称(appname)+「-face-ios」后缀,如申请的应用名称(appname)为test123,则此处填写test123-face-ios)
// 在后台 -> 产品服务 -> 人脸识别 -> 客户端SDK管理查看,如果没有的话就新建一个
licenseID: string;
enableSound: boolean; //语音播报
showSoundIcon: boolean; //语音播报图标显示隐藏
faceQuality: FaceSelectType; //质量控制
enableLiveness: boolean; //是否是活体检测 false - 人脸采集 true - 动作采集
livenessisByOrder: boolean; //是否活体检测顺序随机 enableLiveness = true 生效
liveActionArray: FaceLivenessActionType[]; //活体动作 enableLiveness = true 生效
titleAlignment: TitleAlignment, //标题居左 居中 居右
title: string, //标题名称
titleColor: string, //标题颜色 #或0x开头的hex颜色值
tipsTimeout: string, //超时提示标题
tipsTimeoutColor: string, //超时提示标题颜色 #或0x开头的hex颜色值
tipsRetry: string, //超时重新采集提示标题
tipsRetryColor: string, //超时重新采集提示标题颜色 #或0x开头的hex颜色值
tipsReturn: string, //超时返回首页提示标题
tipsReturnColor: string, //超时返回首页提示标题颜色 #或0x开头的hex颜色值
topColors: string[], //顶部颜色渐变(标题栏和状态栏 长度必须为2) #或0x开头的hex颜色值
lineColor: string, //圆环刻度颜色 #或0x开头的hex颜色值
scaleColor: string, //圆环进度颜色 #或0x开头的hex颜色值
enableRemind: boolean, //是否显示采集提示文字
remindColor: string, //识别提示标题颜色 #或0x开头的hex颜色值
remindDetailColor: string, //识别提示详情标题颜色 #或0x开头的hex颜色值
}
export interface FaceResult {
code: number;
message: string;
image64: string;
}
四、自定义UI配置(图标尺寸推荐60x60以上)
图标的标题一定要按照如下名称,否则自定义图标失败
说明一下。自定义UI是按自己需求来的,可以不用创建图标目录。插件默认是有这些图标的。不符合自己的UI在去创建图标目录,放入下面相应名字的图标
1、返回按钮
Android:(p结尾的图标是按下时的图标)
icon_titlebar_close.png
icon_titlebar_close_p.png
IOS:
icon_titlebar_close.png
2、语音提示按钮
Android:(p结尾的图标是按下时的图标)
icon_titlebar_voice_close.png
icon_titlebar_voice_close_p.png
icon_titlebar_voice1.png
icon_titlebar_voice2.png
IOS:
icon_titlebar_voice_close.png
icon_titlebar_voice1.png
icon_titlebar_voice2.png
3、超时提示图标
Android:
icon_overtime.png
IOS:
icon_overtime.png
Android配置目录:注意文件目录一定要跟下图一样
IOS配置目录:注意文件目录一定要跟下图一样
com.baidu.idl.face.view.image.bundle 不是目录哦。是IOS的资源文件。加QQ交流群下载或下方链接下载
链接: https://pan.baidu.com/s/1OYddLGeTLhWkFD8AKDGKxA?pwd=fwgv 提取码: fwgv
五、API说明
startFaceIdentification(Object config, Function callback)
-
功能描述:
人脸采集。
-
参数配置:
config 参数:
参数名称 参数类型 参数含义 licenseID string 百度后台 License ID enableSound boolean 语音播报 faceQuality FaceSelectType 质量控制(见类型配置-FaceSelectType) enableLiveness boolean 活体检测 false - 人脸采集 true - 动作采集 livenessisByOrder boolean 活体检测顺序随机 liveActionArray FaceLivenessActionType[] 活体动作(见类型配置-FaceLivenessActionType) titleAlignment TitleAlignment 标题文字居 左 中 右 title string 标题 titleColor string 标题颜色(#或0x开头的hex颜色值) tipsTimeout string 超时提示标题 tipsTimeoutColor string 超时提示标题颜色 #或0x开头的hex颜色值 tipsRetry string 超时重新采集提示标题 tipsRetryColor string 超时重新采集提示标题颜色 #或0x开头的hex颜色值 tipsReturn string 超时返回首页提示标题 tipsReturnColor string 超时返回首页提示标题颜色 #或0x开头的hex颜色值 topColors string[] 状态栏和标题栏渐变颜色(#或0x开头的hex颜色值) lineColor string 圆环刻度颜色 (#或0x开头的hex颜色值) scaleColor string 圆环进度颜色 (#或0x开头的hex颜色值) enableRemind boolean 是否显示采集提示文字 remindColor string 采集提示标题颜色 (#或0x开头的hex颜色值) remindDetailColor string 采集提示详情标题颜色 (#或0x开头的hex颜色值) 参数例子:
//人脸采集 //人脸采集 RL-Uniplugins 是后台申请的appname 注意!注意!注意!XXXXXX 是百度后台申请的appname export const DefaultFaceConfig: FaceConfig = { licenseID: plus.os.name == "Android" ? "XXXXXX-face-android" : "XXXXXX-face-ios", //XXXXXX后台申请的appname enableSound: true, showSoundIcon: false, faceQuality: FaceSelectType.BDFaceSelectTypeNormal, enableLiveness: true, livenessisByOrder: false, liveActionArray: [ FaceLivenessActionType.FaceLivenessActionTypeLiveEye, FaceLivenessActionType.FaceLivenessActionTypeLiveMouth, // FaceLivenessActionType.FaceLivenessActionTypeLiveYawRight, // FaceLivenessActionType.FaceLivenessActionTypeLiveYawLeft, ], titleAlignment: TitleAlignment.AlignmentLeft, title: "打卡", titleColor: "#E38746", tipsTimeout: "采集超时啦~~", tipsTimeoutColor: "#E38746", tipsRetry: "请重试~~", tipsRetryColor: "#B620E0", tipsReturn: "返回~~", tipsReturnColor: "#5995F6", topColors: ["#FFFFFF", "#FFFFFF"], lineColor: "#00FF00", scaleColor: "#0000FF", enableRemind: true, remindColor: "#515151", remindDetailColor: "#707070", }
callback 参数返回数据类型(见配置类型-FaceResult)
getVersion()
-
功能描述:
获取百度人脸采集SDK版本(跟随其更新版本)。
destorySDK()
- 销毁SDK。一般界面销毁使用。
六、使用案例
<template>
<view class="content">
<button type="primary" @click="startFace">开始人脸采集</button>
<view>
-------------------------
</view>
<button type="primary" @click="getBaiduFaceVersion">获取版本</button>
<view>
-------------------------
</view>
<view class="image-content">
<image style="width: 160px; height: 200px; background-color: #eeeeee;" mode="scaleToFill" :src="'data:image/jpeg;base64,' + base64"
@error="imageError"></image>
</view>
<view class="textbox">
<text>{{result}}</text>
</view>
</view>
</template>
<script setup lang="ts">
import {
onUnmounted,
ref
} from "vue";
import { DefaultFaceConfig, FaceResult } from "./face_config";
var faceModule = uni.requireNativePlugin("RLUni-EasyBaiduFaceModule")
var result = ref('');
var base64 = ref('');
function startFace() {
// 调用异步方法
faceModule.startFaceIdentification(DefaultFaceConfig,
(ret: FaceResult) => {
result.value = `code:${ret.code} - message:${ret.message}`
base64.value = ret.image64
})
}
function getBaiduFaceVersion() {
uni.showToast({
title: `当前版本:${faceModule.getVersion()}`
});
}
function imageError(e: any) {
console.error(e.detail.errMsg)
}
onUnmounted(() => {
faceModule.destorySDK()
})
</script>
<style>
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.textbox {
width: 100%;
word-wrap: break-word;
}
</style>