产品动态
产品公告

// 设置ndk so架构过滤(以armeabi-v7a为例)ndk {abiFilters 'armeabi-v7a'}dependencies {// 引入慧眼SDKimplementation files("libs/huiyansdk_android_overseas_1.0.9.5_release.aar")// 慧眼通用算法SDKimplementation files("libs/tencent-ai-sdk-youtu-base-1.0.1.32-release.aar")// 通用能力组件库implementation files("libs/tencent-ai-sdk-common-1.1.27-release.aar")implementation files("libs/tencent-ai-sdk-aicamera-1.0.18-release.aar")// 慧眼SDK需要依赖的第三方库// gsonimplementation 'com.google.code.gson:gson:2.8.5'}
<!-- 摄像头权限 --><uses-permission android:name="android.permission.CAMERA" /><uses-featureandroid:name="android.hardware.camera"android:required="true" /><uses-feature android:name="android.hardware.camera.autofocus" /><!-- SDK需要的权限 --><uses-permission android:name="android.permission.INTERNET" /><!-- SDK可选需要的权限 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
@Overridepublic void onCreate() {super.onCreate();instance = this;// SDK需要在Application初始化时进行初始化HuiYanOsApi.init(getApp());}

// HuiYanOs的相关参数HuiYanOsConfig huiYanOsConfig = new HuiYanOsConfig();// 此license文件存放在assets下huiYanOsConfig.setAuthLicense("YTFaceSDK.license");// 启动核身前,拉取本地的配置参数信息HuiYanOsApi.startGetAuthConfigData(huiYanOsConfig, new HuiYanConfigCallback() {@Overridepublic void onSuccess(String result) {// 获取配置信息成功, 将配置信息发送给服务器,兑换启动核身配置,服务器下发的光线序列(客户自己实现上图step 4)String reflectSequence = getAuthLightData(result);// ... 剩余步骤}@Overridepublic void onFail(int errorCode, String errMsg) {// 获取配置参数失败(客户自己实现)showError(errorCode, errMsg);}});

// 启动核验,reflectSequence为上一步从服务器端兑换的光线序列的数据HuiYanOsApi.startAuthByLightData(reflectSequence, new HuiYanResultCallBack() {@Overridepublic void onSuccess(byte[] data, String videoPath) {// 1. 将本地核身的数据信息,发送到服务器端做比对验证,得到最终结果。(客户自己实现上图step 9)checkAuthResultByData(data);// 2. 处理本地核身视频videoPath。(客户自己实现)dealWithAuthVideo(videoPath);}@Overridepublic void onFail(int errorCode, String errMsg) {// 本地核身失败获取,发生错误showError(errorCode, errMsg);}});

// HuiYanOs的相关参数HuiYanOsConfig huiYanOsConfig = new HuiYanOsConfig();// 此license文件存放在assets下huiYanOsConfig.setAuthLicense("YTFaceSDK.license");if (compatCheckBox.isChecked()) {huiYanOsConfig.setPageColorStyle(PageColorStyle.Dark);}// 是否需要返回最佳帧if (needBestImageCB.isChecked()) {huiYanOsConfig.setNeedBestImage(true);}// 启动精简方法,开始的活体,currentToken为后台下发数据HuiYanOsApi.startHuiYanAuth(currentToken, huiYanOsConfig, new HuiYanOsAuthCallBack() {@Overridepublic void onSuccess(HuiYanOsAuthResult authResult) {showToast("活体通过!");if (!TextUtils.isEmpty(authResult.getBestImage())) {CommonUtils.decryptBestImgBase64(authResult.getBestImage(), false);}}@Overridepublic void onFail(int errorCode, String errorMsg, String token) {String msg = "活体失败 " + "code: " + errorCode + " msg: " + errorMsg + " token: " + token;Log.e(TAG, "onFail" + msg);showToast(msg);}});
@Overrideprotected void onDestroy() {super.onDestroy();// 退出时做资源释放HuiYanOsApi.release();}
#慧眼SDK的混淆包含-keep class com.tencent.could.huiyansdk.** {*;}-keep class com.tencent.could.aicamare.** {*;}-keep class com.tencent.could.component.** {*;}-keep class com.tencent.youtu.** {*;}-keep class com.tenpay.utils.SMUtils {*;}
// java版本支持1.8compileOptions {sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8}
// for HuiYanSDK"R.string.ocr_*","R.string.rst_*","R.string.net_*","R.string.msg_*","R.string.fl_*",
API | 功能描述 |
初始化接口 | |
资源释放接口 | |
获取慧眼SDK本地配置信息的接口 | |
传入服务器获取的光线序列,继续完成活体核身检测的接口 | |
精简流程的海外核身接口,只需调用此接口即可完成整体核身流程。 |
public static void init(Context context)
参数类型 | 参数名称 | 参数含义 |
Context | context | App的上下文信息 |
public static void release()
public static void startGetAuthConfigData(HuiYanOsConfig startConfig, HuiYanConfigCallback configCallback)
参数类型 | 参数名称 | 参数含义 |
startConfig | 配置的参数 | |
configCallback | 拉取配置结果的回调 |
public static void startAuthByLightData(String reflectSequence, HuiYanResultCallBack resultCallBack)
参数类型 | 参数名称 | 参数含义 |
String | reflectSequence | 从服务器兑换来启动核身使用的光线序列 |
resultCallBack | 本地核身的结果回调 |
public static void startHuiYanAuth(final String startToken, final HuiYanOsConfig startConfig, HuiYanOsAuthCallBack authCallBack)
参数类型 | 参数名称 | 参数含义 |
String | startToken | 从服务器兑换来启动核身使用的业务Token |
startConfig | 配置的参数 | |
authCallBack | 活体结果的回调 |
类型 | 名称 | 含义 | 默认值 |
pageColorStyle | 此次人脸核身检测的配色 | PageColorStyle.Light | |
String | authLicense | 客户申请的用户核审授权的License文件名 | 空 |
long | authTimeOutMs | 设置活体检测的超时时间 | 10000毫秒(10秒) |
boolean | isDeleteVideoCache | 是否删除核身视频的本地缓存 | true |
boolean | isShowGuidePage | 是否打开核身的引导页 | true |
boolean | isNeedBestImage | 是否需要返回最佳帧(此配置只在精简流程有效) | false |
LanguageStyle | languageStyle | 语言类型 | 跟随系统语言 |
String | languageCode | 语言码(见附录),配合languageStyle一起使用 | 空 |
PageColorStyle 类型 | 含义 |
PageColorStyle.Light | 亮色调配色 |
PageColorStyle.Dark | 暗色调配色 |
LanguageStyle 类型 | 含义 |
LanguageStyle.AUTO | 跟随系统 |
LanguageStyle.ENGLISH | 英语 |
LanguageStyle.SIMPLIFIED_CHINESE | 简体中文 |
LanguageStyle.TRADITIONAL_CHINESE | 繁体中文 |
LanguageStyle.CUSTOMIZE_LANGUAGE | 自定义语言 |
类型 | 名称 | 含义 | 模式值 |
String | token | 此次活体流程中使用的token | 空 |
String | bestImage | 活体最佳帧图片的Base64数据 | 空 |
错误码 | 错误码值 | 错误码含义 |
HY_NETWORK_ERROR | 210 | 网络请求出现异常 |
HY_LOCAL_REF_FAILED_ERROR | 211 | 本地初始化SDK时,检测失败,常见异常不存在license文件或者license过期 |
HY_USER_CANCEL_ERROR | 212 | 用户主动取消核身流程 |
HY_INNER_ERROR_CODE | 213 | SDK内部产生的异常,终止了核身流程 |
HY_DO_NOT_CHANGE_ERROR | 214 | 在核身过程中切换应用发生终止流程的异常 |
HY_CAMERA_PERMISSION_ERROR | 215 | 获取摄像头过程中发生异常 |
HY_INIT_SDK_ERROR | 216 | 未调用init()方法,直接调用了 |
HY_VERIFY_LOCAL_ERROR | 217 | 本地人脸检测失败 |
HY_PERMISSION_CHECK_ERROR | 218 | 本地SDK所需要的权限不足 |
HY_APP_STOP_ERROR | 219 | 集成者主动终止核身流程,startAuthByLightData的reflectSequence为null时 |
HY_CHECK_LIVE_DATA_ERROR | 220 | 传入的光线序列参数校验失败 |
HY_INITIALIZATION_PARAMETER_EXCEPTION | 221 | 在未获取设备配置的前提下,直接调用了设置光线序列参数的方法时,会出现的异常 |
HY_VERIFY_LOCAL_TIME_OUT | 222 | 本地核身动作检测超时 |
HY_PREPARE_TIME_OUT | 223 | 准备过程超时(启动摄像头到第一次检测到人脸的时间超时) |
HY_CHECK_PERMISSION_ERROR | 224 | SDK内部申请摄像头权限失败 |
/*** 新慧眼SDK初始化与拉取本地配置的回调*/public interface HuiYanConfigCallback {/*** 获取配置成功的接口** @param result 配置信息*/void onSuccess(String result);/*** 获取配置失败的接口** @param errorCode 错误码* @param errMsg 错误信息*/void onFail(int errorCode, String errMsg);}
/*** 核身完成的回调类型*/public interface HuiYanResultCallBack {/*** 回调成功的数据** @param data 比对数据* @param videoPath 核身视频路径*/void onSuccess(byte[] data, String videoPath);/*** 回调失败的结果** @param errorCode 错误码* @param errMsg 错误详细信息*/void onFail(int errorCode, String errMsg);}
/*** 海外精简的结果回调** @author jerrydong* @since 2022/6/10*/public interface HuiYanOsAuthCallBack {/*** 活体成功回调** @param authResult 结果*/void onSuccess(HuiYanOsAuthResult authResult);/*** 活体失败** @param errorCode 错误码* @param errorMsg 错误信息* @param token 本次核身使用的*/void onFail(int errorCode, String errorMsg, String token);}

huiYanOsConfig.setLanguageStyle(LanguageStyle.CUSTOMIZE_LANGUAGE);huiYanOsConfig.setLanguageCode("th-TH");
语言码 | 对应使用的国家或地区 |
af-ZA | 公用荷兰语 - 南非 |
sq-AL | 阿尔巴尼亚 -阿尔巴尼亚 |
ar-DZ | 阿拉伯语 -阿尔及利亚 |
ar-BH | 阿拉伯语 -巴林 |
ar-EG | 阿拉伯语 -埃及 |
ar-IQ | 阿拉伯语 -伊拉克 |
ar-JO | 阿拉伯语 -约旦 |
ar-KW | 阿拉伯语 -科威特 |
ar-LB | 阿拉伯语 -黎巴嫩 |
ar-LY | 阿拉伯语 -利比亚 |
ar-MA | 阿拉伯语 -摩洛哥 |
ar-OM | 阿拉伯语 -阿曼 |
ar-QA | 阿拉伯语 -卡塔尔 |
eu-ES | 巴斯克 -巴斯克 |
be-BY | Belarusian-白俄罗斯 |
bg-BG | 保加利亚 -保加利亚 |
ca-ES | 嘉泰罗尼亚 -嘉泰罗尼亚 |
zh-HK | 华语 - 中国香港 |
zh-MO | 华语 - 中国澳门 |
zh-CN | 华语 -中国 |
zh-SG | 华语 -新加坡 |
zh-TW | 华语 - 中国台湾 |
zh-CHS | 华语 (简体化) |
zh-CHT | 华语 (传统的) |
hr-HR | 克罗埃西亚 -克罗埃西亚 |
cs-CZ | 捷克 - 捷克 |
da-DK | 丹麦文 -丹麦 |
div-MV | Dhivehi-马尔代夫 |
nl-BE | 荷兰 -比利时 |
nl-NL | 荷兰 - 荷兰 |
en-AU | 英国 -澳洲 |
en-ZA | 英国 - 南非 |
en-PH | 英国 -菲律宾共和国 |
en-NZ | 英国 - 新西兰 |
en-GB | 英国 - 英国 |
en-US | 英国 - 美国 |
fa-IR | 波斯语 -伊朗王国 |
fi-FI | 芬兰语 -芬兰 |
fr-FR | 法国 -法国 |
fr-BE | 法国 -比利时 |
fr-MC | 法国 -摩纳哥 |
fr-CH | 法国 -瑞士 |
gl-ES | 加利西亚 -加利西亚 |
ka-GE | 格鲁吉亚州 -格鲁吉亚州 |
de-DE | 德国 -德国 |
de-LU | 德国 -卢森堡 |
de-CH | 德国 -瑞士 |
el-GR | 希腊 -希腊 |
gu-IN | Gujarati-印度 |
he-IL | 希伯来 -以色列 |
hi-IN | 北印度语 -印度 |
hu-HU | 匈牙利的 -匈牙利 |
is-IS | 冰岛的 -冰岛 |
it-IT | 意大利 -意大利 |
ja-JP | 日本 -日本 |
kk-KZ | Kazakh-哈萨克 |
kn-IN | 卡纳达语 -印度 |
ko-KR | 韩国 -韩国 |
lv-LV | 拉脱维亚的 -拉脱维亚 |
lt-LT | 立陶宛 -立陶宛 |
ms-BN | 马来 -汶莱 |
ms-MY | 马来 -马来西亚 |
mr-IN | 马拉地语 -印度 |
mn-MN | 蒙古 -蒙古 |
nn-NO | 挪威 (Nynorsk)- 挪威 |
pl-PL | 波兰 -波兰 |
pt-BR | 葡萄牙 -巴西 |
pt-PT | 葡萄牙 -葡萄牙 |
ro-RO | 罗马尼亚语 -罗马尼亚 |
sa-IN | 梵文 -印度 |
ru-RU | 俄国 -俄国 |
sk-SK | 斯洛伐克 -斯洛伐克 |
es-AR | 西班牙 -阿根廷 |
es-ES | 西班牙 -西班牙 |
sv-SE | 瑞典 -瑞典 |
th-TH | 泰国 -泰国 |
tr-TR | 土耳其语 -土耳其 |
uk-UA | 乌克兰 -乌克兰 |
ur-PK | Urdu-巴基斯坦 |
vi-VN | 越南 -越南 |
文档反馈