android 活体检测demo,alive-detected-android-demo

活体检测接入文档

一、SDK集成

1、获取SDK

从易盾官网下载活体检测sdk的aar包

2、手动导入SDK

将获取的sdk的aar文件放到工程中的libs文件夹下,然后在app的build.gradle文件中增加如下代码

repositories {

flatDir {

dirs 'libs'

}

}

在dependencies依赖中增加对aar包的引用

implementation(name:'alive_detected_libary', ext: 'aar') // aar名称和版本号以下载下来的最新版为准

implementation(name: 'openCVLibrary343-release', ext: 'aar') // 添加对OpenCV库的依赖

implementation 'com.squareup.okhttp3:okhttp:3.3.1' // 添加对okHttp的依赖

implementation 'com.google.code.gson:gson:2.8.5' // 添加对gson的依赖

二、SDK接口

1)活体检测功能提供类:AliveDetector

getInstance():获取AliveDetector单例对象

init(Context context, NISCameraPreview cameraPreview, String businessId) :初始化,第一个参数是Context对象,第2个参数为相机预览View,第三个参数为从易盾官网申请的业务id

void setDetectedListener(DetectedListener detectedListener):设置回调监听器

void startDetect():开始检测

void stopDetect():关闭检测

void setTimeOut(long timeout):设置检测超时时间,单位ms,默认为2min

void setDebugMode(boolean isDebug):设置是否开启调试模式,默认关闭

void setSensitivity(int sensitivity):设置检测动作灵敏度等级,可取值为 0,1,2分别表示容易通过,普通,难通过

2)活体检测检回调监听器类:DetectedListener

public interface DetectedListener {

/**

* 活体检测引擎初始化时回调

*

* @param isInitSuccess 活体检测引擎是否初始化成功:

* 1)true,初始化完成可以开始检测

* 2)false,初始化失败,可尝试重新启动活体检测流程 {@link AliveDetector#startDetect()}

*/

void onReady(boolean isInitSuccess);

/**

* 此次活体检测下发的待检测动作指令序列,{@link ActionType}

*

* @param actionTypes

*/

void onActionCommands(ActionType[] actionTypes);

/**

* 活体检测状态是否改变,当引擎检测到状态改变时会回调该接口

*

* @param actionType 当前动作类型,如果接入者希望替换SDK内部默认的检测状态提示文案,

* 可通过该参数判断动作类型,然后替换{@code stateTip}的值即可

* @param stateTip 引擎检测到的实时状态

*/

void onStateTipChanged(ActionType actionType, String stateTip);

/**

* 活体检测是否通过回调

*

* @param isPassed 活体检测是否通过,true:通过,false:不通过

* @param token 此次活体检测返回的易盾token

*/

void onPassed(boolean isPassed, String token);

/**

* 活体检测过程中出现错误时回调

*

* @param code 错误码

* @param msg 出错原因

*/

void onError(int code, String msg, String token);

/**

* 活体检测过程超时回调

*/

void onOverTime();

}

3)活体检测动作序列类型枚举:ActionType

活体下发动作序列以及实时检测时返回的动作序列类型,其包含的值与对应含义如下:

ACTION_STRAIGHT_AHEAD("0", "正视前方"),

ACTION_TURN_HEAD_TO_RIGHT("1", "向右转头"),

ACTION_TURN_HEAD_TO_LEFT("2", "向左转头"),

ACTION_OPEN_MOUTH("3", "张嘴动作"),

ACTION_BLINK_EYES("4", "眨眼动作"),

ACTION_ERROR("5", "动作错误"),

ACTION_PASSED("6", "动作通过");

三、使用说明

1、在xml布局文件中使用活体检测相机预览View

注意:

- 为了避免在某些中低端机型上检测卡顿,建议预览控件的宽与高不要设置为全屏,过大的预览控件会导致处理的数据过大,降低检测流畅度

- 预览宽高不要随意设置,请遵守大部分相机支持的预览宽高比,3:4或9:16

如下是个简单示例:

android:id="@+id/surface_view"

android:layout_width="360dp"

android:layout_height="480dp" />

2、获取AliveDetector对象,进行初始化

将前面布局中获取到的相机预览View以及从易盾官网申请的业务id传给init()接口进行初始化

mAliveDetector = AliveDetector.getInstance();

mAliveDetector.init(this, mCameraPreview, BUSINESS_ID);

3、设置回调监听器,在监听器中根据相应回调做自己的业务处理

mAliveDetector.setDetectedListener(new DetectedListener() {

@Override

public void onReady(boolean isInitSuccess) {

if (isInitSuccess) {

Log.d(TAG, "活体检测引擎初始化完成");

} else {

// mAliveDetector.startDetect();

Log.e(TAG, "活体检测引擎初始化失败");

}

}

/**

* 此次活体检测下发的待检测动作指令序列

*

* @param actionTypes

*/

@Override

public void onActionCommands(ActionType[] actionTypes) {

String commands = buildActionCommand(actionTypes);

showToast("活体检测动作序列为:" + commands);

Log.e(TAG, "活体检测动作序列为:" + commands);

}

@Override

public void onStateTipChanged(ActionType actionType, String stateTip) {

Log.d(TAG, "actionType:" + actionType.getActionTip() + " stateTip:" + actionType);

setTipText(stateTip);

}

@Override

public void onPassed(boolean isPassed, String token) {

if (isPassed) {

Log.d(TAG, "活体检测通过,token is:" + token);

showToast("活体检测通过,token is:" + token);

} else {

Log.e(TAG, "活体检测不通过,token is:" + token);

showToast("活体检测不通过,token is:" + token);

}

}

@Override

public void onError(int code, String msg, String token) {

Log.e(TAG, "listener [onError]:" + msg);

showToast("活体检测出错,原因:" + msg + " token:" + token);

}

@Override

public void onOverTime() {

showToast("检测超时");

}

});

4、开始/停止检测

mAliveDetector.startDetect();

mAliveDetector.stopDetect();

四、防混淆配置

-keep class com.netease.nis.alivedetected.entity.**{*;}

-keep class com.netease.nis.alivedetected.AliveDetector {#不会混淆类名

public ;

}

-keep class com.netease.nis.alivedetected.DetectedEngine{

native ;

}

-keep class com.netease.nis.alivedetected.NISCameraPreview {#不会混淆类名

public ;

}

-keep class com.netease.nis.alivedetected.DetectedListener{*;}

-keep class com.netease.nis.alivedetected.ActionType { *;}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值