更新记录

1.0.0(2021-03-29)

初始版本 可以正常使用百度离线人脸采集


平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.1 - 11.0 armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 适用版本区间:9 - 14

原生插件通用使用流程:

  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原生插件配置”->”云端插件“列表中删除该插件重新选择


使用步骤

  1. 注册百度在管理控制台中新建一个离线采集应用,并且请填写正确的包名

    Android 申请license IOS 申请license

  2. 人脸识别 - 离线采集SDK管理

  3. 将百度授权文件aip.license放在如下文件夹中。

    Android:nativeplugins/ChuJC-Baidu-Face-Collect/android/assets/aip.license
    IOS:nativeplugins/ChuJC-Baidu-Face-Collect/ios/aip.license。

    注意文件夹名称与路径必须完全一致,没的对应的文件夹请创建,nativeplugins 文件夹必须放在项目根目录下

  4. 配置插件,路径:manifest.json > App原生插件配置 > 选择云端插件

  5. 权限添加权限 路径:manifest.json > App权限配置

Android 需要添加如下权限

android.permission.READ_EXTERNAL_STORAGE    读取手机外部存储权限
android.permission.WRITE_EXTERNAL_STORAGE   写入手机外部存储权限
android.permission.CAMERA   拍照权限

IOS需要添加如下权限

NSPhotoLibraryUsageDescription (相册)

调用示例

可以参考示例工程

const Face = uni.requireNativePlugin('ChuJC-Baidu-Face-Collect');
...
// 需要先调用 init 方法初始化SDK

// 完整的 License ID
// iOS License ID: testplugin-face-ios  
// 安卓 License ID: testplugin-face-android
initFaceSdk() {
    Face.init({
        appName: "testplugin" // appName 只需要填写前半部分
    }, result => {
        const msg = JSON.stringify(result);
        console.log(msg)
        if (result.code == 200) {
            this.faceInitStatus = true
        }
    })
},
handelFaceCollect(random) {
    if (!this.faceInitStatus) {
        uni.showModal({
            title: "SDK初始化失败",
            content: "请检查初始化参数、授权文件",
            success: function(res) {
                if (res.confirm) {
                    console.log('用户点击确定');
                } else if (res.cancel) {
                    console.log('用户点击取消');
                }
            }
        });
        return;
    }
    let livenessType = [ 'Eye', 'Mouth', 'HeadRight', 'HeadLeft', 'HeadUp', 'HeadDown' ];
    const randomNum = parseInt(Math.random()*(5)) + 2;
    let lelivenessTypeList = this.getRandomArrayElements(livenessType, randomNum);
    Face.collect({
        isActionLive: "true", // 是否活体检查 false
        isLivenessRandom: random ? "true" : "false", // 活动检查有效,是否随机监测动作
        livenessTypeList: lelivenessTypeList // 活动检查有效,检查动作列表
    }, result => {
        const msg = JSON.stringify(result);
        console.log(msg)
        uni.showModal({
            title: "返回信息",
            content: result.msg,
            success: function(res) {
                if (res.confirm) {
                    console.log('用户点击确定');
                } else if (res.cancel) {
                    console.log('用户点击取消');
                }
            }
        });
        if(result.hasOwnProperty("image")) { // 识别成功后返回 image
            this.status = true;
            this.image = "data:image/png;base64," + result.image;
        } 
    });
}
...

返回结构

{
    "code": 200,
    "msg" : "说明......", 
    "image": "" // 采集成功才返回
}
code 说明
200 识别成功
401 授权异常
400 错误
402 超时

可以设置动作

需要传递为数组 [ 'Eye', 'Mouth', 'HeadRight', 'HeadLeft', 'HeadUp', 'HeadDown' ]

  • Eye 眨眨眼
  • Mouth 张张嘴
  • HeadRight 缓慢向右转头
  • HeadLeft 缓慢向左转头
  • HeadUp 缓慢抬头
  • HeadDown 缓慢低头

其他

目前仅开发了如上调用方法,如果还有其他需求、问题可以发邮件到john1668@qq.com

隐私、权限声明

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

Android 需要添加如下权限 android.permission.READ_EXTERNAL_STORAGE 读取手机外部存储权限 android.permission.WRITE_EXTERNAL_STORAGE 写入手机外部存储权限 android.permission.CAMERA 拍照权限 IOS需要添加如下权限 NSPhotoLibraryUsageDescription (相册)

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

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

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