将依赖版本号修改为2.4.0:
xxxxxxxxxxdependencies {...implementation 'ai.advance.mobile-sdk.android:liveness-detection:2.4.0'}
将依赖版本号修改为2.3.0:
xxxxxxxxxxdependencies {...implementation 'ai.advance.mobile-sdk.android:liveness-detection:2.3.0'}
lkarus:PUA.AndroidOS.Spyloan Not-a-virus:HEUR:RiskTool.AndroidOS.SpyLoan.fk将依赖版本号修改为2.2.1:
xxxxxxxxxxdependencies {...implementation 'ai.advance.mobile-sdk.android:liveness-detection:2.2.1'}
我们发现 LivenessActivity 这个类名被 Kaspersky 等平台标记为风险,请您务必修改此类名为其他名称,以解决Not-a-virus:HEUR:RiskTool.AndroidOS.SpyLoan.fk警告
lkarus:PUA.AndroidOS.Spyloan 将依赖版本号修改为2.2.0:
xxxxxxxxxxdependencies {...implementation 'ai.advance.mobile-sdk.android:liveness-detection:2.2.0'}
将依赖版本号修改为2.1.9:
xxxxxxxxxxdependencies {...implementation 'ai.advance.mobile-sdk.android:liveness-detection:2.1.9'}
打开审计图片列表功能。
xxxxxxxxxx// 第一个布尔值表示是否启用该功能,// 第二个值表示图片大小。大小范围为[50, 1000],默认值为600。// 第三个值是图片压缩质量,质量范围为[30, 100],默认值为30。GuardianLivenessDetectionSDK.setAuditImageConfig(true,300,30);
将依赖版本号修改为2.1.8:
xxxxxxxxxxdependencies {...// 版本记录:http://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xmlimplementation 'ai.advance.mobile-sdk.android:liveness-detection:2.1.8'}
开启审计图功能
xxxxxxxxxx// 第一个布尔代表是否开启此功能(默认关闭),第二个值代表图片尺寸(px),尺寸范围:[50,1000],默认 600GuardianLivenessDetectionSDK.setAuditImageConfig(true,300);
获取审计图
xxxxxxxxxxList<LivenessImageData> imageSequenceList = LivenessResult.getAuditImageList();// LivenessImageData 结构public class LivenessImageData {// base64格式的图片public final String base64Image;// 图片采集的时间戳public final long timestamp;// 图片对应的动作public Detector.DetectionType detectionType;}
将依赖版本号修改为 2.1.6:
xxxxxxxxxxdependencies {...// 版本记录:http://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xmlimplementation 'ai.advance.mobile-sdk.android:liveness-detection:2.1.6'}
将依赖版本号修改为 2.1.5:
xxxxxxxxxxdependencies {...// 版本记录:http://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xmlimplementation 'ai.advance.mobile-sdk.android:liveness-detection:2.1.5'}
. 将依赖版本号修改为 2.1.4:
xxxxxxxxxxdependencies {...// 版本记录:http://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xmlimplementation 'ai.advance.mobile-sdk.android:liveness-detection:2.1.4'}
将依赖版本号修改为2.1.3:
xxxxxxxxxxdependencies {...// 版本更新记录请查看:http://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xmlimplementation 'ai.advance.mobile-sdk.android:liveness-detection:2.1.3'}
将依赖版本号修改为2.1.2:
xxxxxxxxxxdependencies {...// 版本更新记录请查看:http://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xmlimplementation 'ai.advance.mobile-sdk.android:liveness-detection:2.1.2'}
将依赖版本号修改为2.1.1:
xxxxxxxxxxdependencies {...// 版本更新记录请查看:http://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xmlimplementation 'ai.advance.mobile-sdk.android:liveness-detection:2.1.1'}
将依赖版本号修改为1.4.0:
xxxxxxxxxxdependencies {...// 版本更新记录请查看:http://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xmlimplementation 'ai.advance.mobile-sdk.android:liveness-detection:1.4.0'}
将依赖版本号修改为2.0.2:
xxxxxxxxxxdependencies {...// 版本更新记录请查看:http://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xmlimplementation 'ai.advance.mobile-sdk.android:liveness-detection:2.0.2'}
将依赖版本号修改为2.0.1:
xxxxxxxxxxdependencies {...// 版本更新记录请查看:http://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xmlimplementation 'ai.advance.mobile-sdk.android:liveness-detection:2.0.1'}
设置动作难度(在 setLicenseAndCheck() 方法之前调用,否则不生效)
您可以根据业务要求指定动作检测的难度(EASY,NORMAL,HARD),默认为 NORMAL
xxxxxxxxxxGuardianLivenessDetectionSDK.setDetectionLevel(GuardianLivenessDetectionSDK.DetectionLevel.EASY);
将依赖版本号修改为2.0.0:
xxxxxxxxxxdependencies {...// 版本更新记录请查看:http://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xmlimplementation 'ai.advance.mobile-sdk.android:liveness-detection:2.0.0'}
新增提示语和检测时状态码,在状态码回调方法中增加对应提示,否则页面会提示空白。文字资源请参照集成文档下载 UI 源码。
xxxxxxxxxx@Overridepublic void onDetectionFrameStateChanged(Detector.WarnCode warnCode) {...switch (warnCode) {...case WARN_WEAKLIGHT:changeTipTextView(R.string.liveness_weak_light);break;case WARN_TOOLIGHT:changeTipTextView(R.string.liveness_too_light);break;case WARN_FACE_BIAS_BOTTOM:changeTipTextView(R.string.liveness_face_move_upper);break;case WARN_FACE_BIAS_UP:changeTipTextView(R.string.liveness_face_move_down);break;case WARN_FACE_BIAS_RIGHT:changeTipTextView(R.string.liveness_face_move_left);break;case WARN_FACE_BIAS_LEFT:changeTipTextView(R.string.liveness_face_move_right);break;...}}
在您项目的 build.gradle 中增加 maven 仓库配置:
xxxxxxxxxxmaven {url 'http://public-n3.advai.net/repository/maven-releases/'// 若您的 gradle 版本大于 7.0,需要增加如下配置允许通过 http 拉取 aar// allowInsecureProtocol = true}
在项目的 app 模块build.gradle增加库依赖:
xxxxxxxxxxdependencies {...// 版本更新记录请查看:http://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xmlimplementation 'ai.advance.mobile-sdk.android:liveness-detection:1.3.9.1'}
删除 liveness_lib_vx.x.x.aar ,guardian_core_vx.x.aar 两个 aar 文件。
使用 liveness_lib_v1.3.8.aar ,guardian_core_v3.2.aar 替换旧版本 aar,同时修改 gradle 中的依赖关系即可
在 Activity 中增加闭眼检测提示,示例代码如下:
LivenessActivity.java
xxxxxxxxxxprivate void updateTipUIView(Detector.WarnCode warnCode) {...switch (warnCode) {...case WARN_EYE_OCCLUSION:changeTipTextView(R.string.liveness_open_eyes);break;...}}
R.string.liveness_open_eyes 各语种资源如下,请手动添加到strings.xml中:
please open your eyespor favor abre tus ojosकृपया अपनी आँखें खोलोtolong buka matamusila buka mata andaกรุณาเปิดตาของคุณlàm ơn hãy mở mắt ra请睁开眼
使用 liveness_lib_v1.2.9.aar,guardian_core_v2.6.aar 替换旧版本 aar,同时修改 gradle 中的依赖关系即可
获取检测过程中的多张图片:
xxxxxxxxxx// 示例代码List<String> imageSequenceList = LivenessResult.getImageSequenceList();for (String base64Img : imageSequenceList) {byte[] decode = Base64.decode(base64Img, Base64.NO_WRAP);Bitmap bmp = BitmapFactory.decodeByteArray(decode, 0, decode.length);}
遮挡检测默认是关闭状态,如需开启遮挡检测,请在初始化SDK之后调用如下方法设置
xxxxxxxxxxGuardianLivenessDetectionSDK.isDetectOcclusion(true)
使用 liveness_lib_v1.2.6.aar,guardian_core_v2.3.aar 替换旧版本 aar,同时修改 gradle 中的依赖关系
在LivenessFragment中的updateTipUIView方法中增加对遮挡情况(WARN_MOUTH_OCCLUSION)的提示,如下:
R.string.liveness_face_occ 提示语国际化文案在新版SDK中,请自行增加到
strings.xml文件中
xxxxxxxxxxprivate void updateTipUIView(Detector.WarnCode warnCode) {if (mLivenessView.isVertical()) {//phone not verticalif (warnCode != null) {switch (warnCode) {...case WARN_MOUTH_OCCLUSION:changeTipTextView(R.string.liveness_face_occ);break;...}}} else {changeTipTextView(R.string.liveness_hold_phone_vertical);}}
license授权方式(目前只支持印度,其他国家业务会陆续支持)ticket授权方式(目前只支持印尼,其他国家业务会陆续支持)liveness模块增加印地语资源liveness模块和您的工程之间完全解耦(需进行全量升级)建议使用全量升级,新版代码更加简洁,几乎无代码侵入。
liveness模块替换旧版本,然后按照集成文档上检测结果新的获取方式进行修改。liveness模块中libs目录下的 aar 文件替换旧的,同时修改 gradle 中的依赖关系即可。原先的
handleResult(ResultEntity entity)方法变更为onDetectionSuccess()中的回调方法onGetFaceDataSuccess(),方法内容如下:
xxxxxxxxxx@Overridepublic void onDetectionSuccess() {mLivenessView.getLivenessData(new LivenessGetFaceDataCallback() {@Overridepublic void onGetFaceDataStart() {...}@Overridepublic void onGetFaceDataSuccess(ResultEntity entity, String livenessId) {// TODO 请务必在此处配合您的服务端进行 anti-spoofing 的校验,此处回调中的 entity 对象中 livenessScore 的值需要从您的 server 获取,否则为 0toResultActivity(entity);}@Overridepublic void onGetFaceDataFailed(ResultEntity entity) {...}});}
全量升级
liveness_lib_v1.1.4.aar 和 guardian_core_v1.2.aar两个文件至 liveness/libs 目录,同时删除对应的旧版本 aar,如果您同时集成了 picture_quality SDK,请同时把该 SDK 依赖的 guardian_core_vxx.aar 替换为 1.2 版本,以免发生版本依赖冲突。liveness/build.gradle 中的 dependencies 标签里增加对 constraint-layout 的依赖:implementation 'com.android.support.constraint:constraint-layout:1.1.3'简单升级:本次更新主要是对 UI 模块做了优化,同时解决了 aar 中少量存在的 bug,您可以选择只替换 aar 文件来修复 aar 中的已知问题。
liveness_lib_v1.1.4.aar 替换 1.1.3 版本文件,同时在 gradle 中将引用更新为 1.1.4 即可。需要根据账号所属国家配置参数
优化活体 SDK 图片的获取方式
增加不支持的设备判断 (无前置摄像头等)
bug 修复
只有活体检测成功后才会有图片
xxxxxxxxxx// 获取 bitmap 格式的图片Bitmap bitmap = LivenessBitmapCache.getLivenessBitmap();// 获取 base64 格式的图片String base64Str = LivenessBitmapCache.getLivenessBase64Str();// 获取图片之后可以调用此方法释放资源LivenessBitmapCache.clearCache();
使用 liveness_lib_v1.1.3.aar替换 1.1.2 版本文件,同时在 gradle 中将引用更新为 1.1.3
活体 SDK 初始化方法需要增加国家类别参数
xxxxxxxxxxGuardianLivenessDetectionSDK.init(this, "your accessKey","your secretKey",your market);
Market
| 枚举 | 解释 |
|---|---|
| Indonesia | 印度尼西亚 |
| Philippines | 菲律宾 |
| Vietnam | 越南 |
| India | 印度 |
不支持的设备判断:
将
LivenessActivity的onResume()和onPause()方法替换,R.string.liveness_device_not_support文字资源在 1.1.3 版本 SDK 中查找
xxxxxxxxxx@Overrideprotected void onResume() {if (GuardianLivenessDetectionSDK.isDeviceSupportLiveness()) {mLivenessFragment = LivenessFragment.newInstance();if (!mLivenessFragment.isAdded()) {getSupportFragmentManager().beginTransaction().replace(R.id.container, mLivenessFragment).commitAllowingStateLoss();}} else {new AlertDialog.Builder(this).setMessage(R.string.liveness_device_not_support).setPositiveButton(R.string.liveness_perform, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {finish();}}).create().show();}super.onResume();}@Overrideprotected void onPause() {if (mLivenessFragment != null && mLivenessFragment.isAdded()) {mLivenessFragment.release();getSupportFragmentManager().beginTransaction().remove(mLivenessFragment).commitAllowingStateLoss();}super.onPause();}
xxxxxxxxxxprivate void handleResult(ResultEntity entity){if (entity!=null && entity.success) {String base64Bitmap = mDetector.getBase64Bitmap();//bitmap base64 type stringbyte[] decode = Base64.decode(base64Bitmap, Base64.NO_WRAP);Bitmap bitmap = BitmapFactory.decodeByteArray(decode, 0, decode.length);//convert base64 string to bitmap}}
有以下两种方式升级 SDK 至 1.1.2 版本,您可以结合实际需求选择其一。 新版本 aar 中已包含了 armeabi 架构,如您在 1.0 集成过程中拷贝了 libaailiveness_v1.0.0.so 至 libs/armeabi 目录下,请删除此 .so
适用于对 liveness 模块代码 无自定义改动或改动较少 的情况。
适用于改动了 liveness 模块。无需删除旧版本 liveness 模块。
tips: 如您未改动 res 目录,可使用新版 liveness 库工程中的 res 直接拷贝覆盖旧的