lkarus:PUA.AndroidOS.Spyloan
Not-a-virus:HEUR:RiskTool.AndroidOS.SpyLoan.fk
将依赖版本号修改为2.2.1
:
xxxxxxxxxx
dependencies {
...
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
:
xxxxxxxxxx
dependencies {
...
implementation 'ai.advance.mobile-sdk.android:liveness-detection:2.2.0'
}
将依赖版本号修改为2.1.9
:
xxxxxxxxxx
dependencies {
...
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
:
xxxxxxxxxx
dependencies {
...
// 版本记录:http://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xml
implementation 'ai.advance.mobile-sdk.android:liveness-detection:2.1.8'
}
开启审计图功能
xxxxxxxxxx
// 第一个布尔代表是否开启此功能(默认关闭),第二个值代表图片尺寸(px),尺寸范围:[50,1000],默认 600
GuardianLivenessDetectionSDK.setAuditImageConfig(true,300);
获取审计图
xxxxxxxxxx
List<LivenessImageData> imageSequenceList = LivenessResult.getAuditImageList();
// LivenessImageData 结构
public class LivenessImageData {
// base64格式的图片
public final String base64Image;
// 图片采集的时间戳
public final long timestamp;
// 图片对应的动作
public Detector.DetectionType detectionType;
}
将依赖版本号修改为 2.1.6
:
xxxxxxxxxx
dependencies {
...
// 版本记录:http://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xml
implementation 'ai.advance.mobile-sdk.android:liveness-detection:2.1.6'
}
将依赖版本号修改为 2.1.5
:
xxxxxxxxxx
dependencies {
...
// 版本记录:http://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xml
implementation 'ai.advance.mobile-sdk.android:liveness-detection:2.1.5'
}
一、. 将依赖版本号修改为 2.1.4
:
xxxxxxxxxx
dependencies {
...
// 版本记录:http://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xml
implementation 'ai.advance.mobile-sdk.android:liveness-detection:2.1.4'
}
将依赖版本号修改为2.1.3
:
xxxxxxxxxx
dependencies {
...
// 版本更新记录请查看:http://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xml
implementation 'ai.advance.mobile-sdk.android:liveness-detection:2.1.3'
}
将依赖版本号修改为2.1.2
:
xxxxxxxxxx
dependencies {
...
// 版本更新记录请查看:http://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xml
implementation 'ai.advance.mobile-sdk.android:liveness-detection:2.1.2'
}
将依赖版本号修改为2.1.1
:
xxxxxxxxxx
dependencies {
...
// 版本更新记录请查看:http://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xml
implementation 'ai.advance.mobile-sdk.android:liveness-detection:2.1.1'
}
将依赖版本号修改为1.4.0
:
xxxxxxxxxx
dependencies {
...
// 版本更新记录请查看:http://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xml
implementation 'ai.advance.mobile-sdk.android:liveness-detection:1.4.0'
}
将依赖版本号修改为2.0.2
:
xxxxxxxxxx
dependencies {
...
// 版本更新记录请查看:http://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xml
implementation 'ai.advance.mobile-sdk.android:liveness-detection:2.0.2'
}
将依赖版本号修改为2.0.1
:
xxxxxxxxxx
dependencies {
...
// 版本更新记录请查看:http://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xml
implementation 'ai.advance.mobile-sdk.android:liveness-detection:2.0.1'
}
设置动作难度(在 setLicenseAndCheck() 方法之前调用,否则不生效)
您可以根据业务要求指定动作检测的难度(EASY,NORMAL,HARD),默认为 NORMAL
xxxxxxxxxx
GuardianLivenessDetectionSDK.setDetectionLevel(GuardianLivenessDetectionSDK.DetectionLevel.EASY);
将依赖版本号修改为2.0.0
:
xxxxxxxxxx
dependencies {
...
// 版本更新记录请查看:http://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xml
implementation 'ai.advance.mobile-sdk.android:liveness-detection:2.0.0'
}
新增提示语和检测时状态码,在状态码回调方法中增加对应提示,否则页面会提示空白。文字资源请参照集成文档下载 UI 源码。
xxxxxxxxxx
@Override
public 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 仓库配置:
xxxxxxxxxx
maven {
url 'http://public-n3.advai.net/repository/maven-releases/'
// 若您的 gradle 版本大于 7.0,需要增加如下配置允许通过 http 拉取 aar
// allowInsecureProtocol = true
}
在项目的 app
模块build.gradle
增加库依赖:
xxxxxxxxxx
dependencies {
...
// 版本更新记录请查看:http://public-n3.advai.net/repository/maven-releases/ai/advance/mobile-sdk/android/liveness-detection/maven-metadata.xml
implementation '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
xxxxxxxxxx
private 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 eyes
por favor abre tus ojos
कृपया अपनी आँखें खोलो
tolong buka matamu
sila 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之后调用如下方法设置
xxxxxxxxxx
GuardianLivenessDetectionSDK.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
文件中
xxxxxxxxxx
private void updateTipUIView(Detector.WarnCode warnCode) {
if (mLivenessView.isVertical()) {//phone not vertical
if (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
@Override
public void onDetectionSuccess() {
mLivenessView.getLivenessData(new LivenessGetFaceDataCallback() {
@Override
public void onGetFaceDataStart() {
...
}
@Override
public void onGetFaceDataSuccess(ResultEntity entity, String livenessId) {
// TODO 请务必在此处配合您的服务端进行 anti-spoofing 的校验,此处回调中的 entity 对象中 livenessScore 的值需要从您的 server 获取,否则为 0
toResultActivity(entity);
}
@Override
public 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 初始化方法需要增加国家类别参数
xxxxxxxxxx
GuardianLivenessDetectionSDK.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
@Override
protected 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() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
}).create().show();
}
super.onResume();
}
@Override
protected void onPause() {
if (mLivenessFragment != null && mLivenessFragment.isAdded()) {
mLivenessFragment.release();
getSupportFragmentManager().beginTransaction().remove(mLivenessFragment).commitAllowingStateLoss();
}
super.onPause();
}
xxxxxxxxxx
private void handleResult(ResultEntity entity){
if (entity!=null && entity.success) {
String base64Bitmap = mDetector.getBase64Bitmap();//bitmap base64 type string
byte[] 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 直接拷贝覆盖旧的