package com.doumee.keyCabinet.utils.face;
|
|
import android.content.Context;
|
import android.text.TextUtils;
|
|
import com.baidu.idl.main.facesdk.FaceAuth;
|
import com.baidu.idl.main.facesdk.callback.Callback;
|
import com.baidu.idl.main.facesdk.license.BDFaceLicenseAuthInfo;
|
import com.baidu.idl.main.facesdk.model.BDFaceSDKCommon;
|
import com.baidu.idl.main.facesdk.utils.PreferencesUtil;
|
import com.example.datalibrary.listener.SdkInitListener;
|
import com.example.datalibrary.utils.ToastUtils;
|
|
import java.text.SimpleDateFormat;
|
import java.util.Date;
|
|
|
public class FaceSDKManager {
|
|
public static final int SDK_MODEL_LOAD_SUCCESS = 0;
|
public static final int SDK_UNACTIVATION = 1;
|
public static final int SDK_UNINIT = 2;
|
public static final int SDK_INITING = 3;
|
public static final int SDK_INITED = 4;
|
public static final int SDK_INIT_FAIL = 5;
|
public static final int SDK_INIT_SUCCESS = 6;
|
|
public static volatile int initStatus = SDK_UNACTIVATION;
|
private FaceAuth faceAuth;
|
|
|
private FaceSDKManager() {
|
faceAuth = new FaceAuth();
|
faceAuth.setActiveLog(BDFaceSDKCommon.BDFaceLogInfo.BDFACE_LOG_TYPE_ALL, 1);
|
faceAuth.setCoreConfigure(BDFaceSDKCommon.BDFaceCoreRunMode.BDFACE_LITE_POWER_NO_BIND, 2);
|
|
}
|
|
private static class HolderClass {
|
private static final FaceSDKManager instance = new FaceSDKManager();
|
}
|
|
public static FaceSDKManager getInstance() {
|
return HolderClass.instance;
|
}
|
/**
|
* 初始化鉴权,如果鉴权通过,直接初始化模型
|
*
|
* @param context
|
* @param listener
|
*/
|
public void init(final Context context, final SdkInitListener listener) {
|
|
PreferencesUtil.initPrefs(context.getApplicationContext());
|
final String licenseOfflineKey = PreferencesUtil.getString("activate_offline_key", "");
|
final String licenseOnlineKey = PreferencesUtil.getString("activate_online_key", "");
|
final String licenseBatchlineKey = PreferencesUtil.getString("activate_batchline_key", "");
|
|
// 如果licenseKey 不存在提示授权码为空,并跳转授权页面授权
|
if (TextUtils.isEmpty(licenseOfflineKey) && TextUtils.isEmpty(licenseOnlineKey)
|
&& TextUtils.isEmpty(licenseBatchlineKey)) {
|
ToastUtils.toast(context, "未授权设备,请完成授权激活");
|
if (listener != null) {
|
listener.initLicenseFail(-1, "授权码不存在,请重新输入!");
|
}
|
return;
|
}
|
// todo 增加判空处理
|
if (listener != null) {
|
listener.initStart();
|
}
|
|
if (!TextUtils.isEmpty(licenseOnlineKey)) {
|
// 在线激活
|
faceAuth.initLicenseOnLine(context, licenseOnlineKey, new Callback() {
|
@Override
|
public void onResponse(int code, String response) {
|
if (code == 0) {
|
initStatus = SDK_INIT_SUCCESS;
|
if (listener != null) {
|
listener.initLicenseSuccess();
|
}
|
// initModel(context, listener);
|
return;
|
} else {
|
listener.initLicenseFail(code, response);
|
}
|
}
|
});
|
} else if (!TextUtils.isEmpty(licenseOfflineKey)) {
|
// 离线激活
|
faceAuth.initLicenseOffLine(context, new Callback() {
|
@Override
|
public void onResponse(int code, String response) {
|
if (code == 0) {
|
initStatus = SDK_INIT_SUCCESS;
|
if (listener != null) {
|
listener.initLicenseSuccess();
|
}
|
// initModel(context, listener);
|
return;
|
} else {
|
listener.initLicenseFail(code, response);
|
}
|
}
|
});
|
} else if (!TextUtils.isEmpty(licenseBatchlineKey)) {
|
// 应用激活
|
faceAuth.initLicenseBatchLine(context, licenseBatchlineKey, new Callback() {
|
@Override
|
public void onResponse(int code, String response) {
|
if (code == 0) {
|
PreferencesUtil.putString("activate_batchline_key", licenseBatchlineKey);
|
initStatus = SDK_INIT_SUCCESS;
|
if (listener != null) {
|
listener.initLicenseSuccess();
|
}
|
// initModel(context, listener);
|
return;
|
} else {
|
listener.initLicenseFail(code, response);
|
}
|
}
|
});
|
} else {
|
if (listener != null) {
|
listener.initLicenseFail(-1, "授权码不存在,请重新输入!");
|
}
|
}
|
}
|
|
public String getLicenseData(Context context) {
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日");
|
BDFaceLicenseAuthInfo bdFaceLicenseAuthInfo = faceAuth.getAuthInfo(context);
|
Date dateLong = new Date(bdFaceLicenseAuthInfo.expireTime * 1000L);
|
String dateTime = simpleDateFormat.format(dateLong);
|
return dateTime;
|
}
|
}
|