更新记录

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

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
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文件:

image-20221109153457512

注意注意:上图IOS证书配置目录是错误的,idl-license.face-ios应该在ios目录下的BundleResources目录中

2、百度后台配置人脸采集SDK License:

image-20221109160427581

3、项目调试自定义调试基座Android设置(一定要注意包名,必须跟百度后台的Android包名一致):

Android打包配置

4、项目调试自定义调试基座IOS设置(一定要注意包名,必须跟百度后台的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配置目录:注意文件目录一定要跟下图一样

image-20221231223010256

IOS配置目录:注意文件目录一定要跟下图一样

image-20221231223215058

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>

隐私、权限声明

1. 本插件需要申请的系统权限列表:

相机

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

EasyBaiduFace插件需要使用百度人脸采集SDK,参考其官方网站 https://ai.baidu.com/ai-doc/FACE/xk37c1jn6文档。 人脸采集协议: 功能说明: 为保障用户账户的安全,提供更好的服务,在提供部分产品及服务之前, 采用人脸核身验证功能对用户的身份进行认证, 用于验证操作人是否为账户持有者本人, 通过人脸识别结果评估是否为用户提供后续产品或服务。该功能会请求权威数据源进行身份信息确认。 授权与许可: 如您点击“确认”或以其他方式选择接受本协议规则,则视为您在使用人脸识别服务时, 同意并授权、获取、使用您在申请过程中所提供的个人信息。 信息安全声明: 承诺对您的个人信息严格保密,并基于国家监管部门认可的加密算法进行数据加密传输,数据加密存储,承诺尽到信息安全保护义务。

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问