|
|
@ -693,6 +693,9 @@ public class MainActivity extends AppCompatActivity { |
|
|
|
android.util.Log.d("MainActivity", "API Message: " + deviceSelectDataManager.getApiResponseMessage()); |
|
|
|
android.util.Log.d("MainActivity", "==============================="); |
|
|
|
|
|
|
|
// 新增:检查并初始化人脸SDK |
|
|
|
initializeFaceSDKIfNeeded(); |
|
|
|
|
|
|
|
dialog.dismiss(); |
|
|
|
|
|
|
|
// 这里可以添加跳转到主界面的逻辑 |
|
|
@ -724,6 +727,220 @@ public class MainActivity extends AppCompatActivity { |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 检查是否需要初始化人脸SDK并在需要时执行初始化 |
|
|
|
*/ |
|
|
|
private void initializeFaceSDKIfNeeded() { |
|
|
|
try { |
|
|
|
// 检查是否有人脸识别许可证 |
|
|
|
if (deviceSelectDataManager.hasFaceLicense()) { |
|
|
|
String faceLicense = deviceSelectDataManager.getFaceLicense(); |
|
|
|
String logMessage = "检测到人脸识别许可证,开始初始化人脸SDK,许可证长度: " + |
|
|
|
(faceLicense != null ? faceLicense.length() : 0); |
|
|
|
android.util.Log.d("MainActivity", logMessage); |
|
|
|
LogManager.logInfo("FaceSDK", logMessage); |
|
|
|
|
|
|
|
// 在后台线程中初始化人脸SDK |
|
|
|
new Thread(new Runnable() { |
|
|
|
@Override |
|
|
|
public void run() { |
|
|
|
initializeFaceSDK(faceLicense); |
|
|
|
} |
|
|
|
}).start(); |
|
|
|
} else { |
|
|
|
String logMessage = "未检测到有效的人脸识别许可证,跳过人脸SDK初始化"; |
|
|
|
android.util.Log.w("MainActivity", logMessage); |
|
|
|
LogManager.logWarning("FaceSDK", logMessage); |
|
|
|
} |
|
|
|
} catch (Exception e) { |
|
|
|
String logMessage = "检查人脸SDK初始化条件时发生异常: " + e.getMessage(); |
|
|
|
android.util.Log.e("MainActivity", logMessage, e); |
|
|
|
LogManager.logError("FaceSDK", logMessage, e); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 初始化人脸SDK |
|
|
|
* @param faceLicense 人脸识别许可证 |
|
|
|
*/ |
|
|
|
private void initializeFaceSDK(String faceLicense) { |
|
|
|
try { |
|
|
|
String logMessage = "开始人脸SDK初始化流程..."; |
|
|
|
android.util.Log.d("MainActivity", logMessage); |
|
|
|
LogManager.logInfo("FaceSDK", logMessage); |
|
|
|
|
|
|
|
// 获取FaceSDKManager实例 |
|
|
|
com.baidu.idl.face.main.finance.manager.FaceSDKManager faceSDKManager = |
|
|
|
com.baidu.idl.face.main.finance.manager.FaceSDKManager.getInstance(); |
|
|
|
|
|
|
|
// 创建同步锁以等待初始化完成 |
|
|
|
final Object initLock = new Object(); |
|
|
|
final boolean[] initCompleted = {false}; |
|
|
|
final boolean[] initSuccess = {false}; |
|
|
|
|
|
|
|
// 在主线程中执行初始化 |
|
|
|
runOnUiThread(new Runnable() { |
|
|
|
@Override |
|
|
|
public void run() { |
|
|
|
faceSDKManager.init(MainActivity.this, faceLicense, new com.baidu.idl.face.main.finance.listener.SdkInitListener() { |
|
|
|
@Override |
|
|
|
public void initStart() { |
|
|
|
String logMessage = "人脸SDK授权初始化开始..."; |
|
|
|
android.util.Log.d("MainActivity", logMessage); |
|
|
|
LogManager.logInfo("FaceSDK", logMessage); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void initLicenseSuccess() { |
|
|
|
String logMessage = "人脸SDK授权成功"; |
|
|
|
android.util.Log.d("MainActivity", logMessage); |
|
|
|
LogManager.logInfo("FaceSDK", logMessage); |
|
|
|
// 授权成功后继续初始化模型 |
|
|
|
initFaceModels(faceSDKManager, initLock, initCompleted, initSuccess); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void initLicenseFail(int errorCode, String msg) { |
|
|
|
String logMessage = "人脸SDK授权失败 - 错误码: " + errorCode + ", 错误信息: " + msg; |
|
|
|
android.util.Log.e("MainActivity", logMessage); |
|
|
|
LogManager.logError("FaceSDK", logMessage); |
|
|
|
synchronized (initLock) { |
|
|
|
initCompleted[0] = true; |
|
|
|
initSuccess[0] = false; |
|
|
|
initLock.notifyAll(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void initModelSuccess() { |
|
|
|
// 这个回调在init方法中不会触发 |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void initModelFail(int errorCode, String msg) { |
|
|
|
// 这个回调在init方法中不会触发 |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
// 等待初始化完成(最多等待30秒) |
|
|
|
synchronized (initLock) { |
|
|
|
if (!initCompleted[0]) { |
|
|
|
try { |
|
|
|
initLock.wait(30000); // 等待最多30秒 |
|
|
|
} catch (InterruptedException e) { |
|
|
|
logMessage = "人脸SDK初始化等待被中断: " + e.getMessage(); |
|
|
|
android.util.Log.e("MainActivity", logMessage); |
|
|
|
LogManager.logError("FaceSDK", logMessage); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 检查初始化结果 |
|
|
|
if (initSuccess[0]) { |
|
|
|
logMessage = "人脸SDK初始化成功"; |
|
|
|
android.util.Log.d("MainActivity", logMessage); |
|
|
|
LogManager.logInfo("FaceSDK", logMessage); |
|
|
|
runOnUiThread(new Runnable() { |
|
|
|
@Override |
|
|
|
public void run() { |
|
|
|
showToast("人脸SDK初始化成功"); |
|
|
|
} |
|
|
|
}); |
|
|
|
} else { |
|
|
|
logMessage = "人脸SDK初始化失败"; |
|
|
|
android.util.Log.e("MainActivity", logMessage); |
|
|
|
LogManager.logError("FaceSDK", logMessage); |
|
|
|
runOnUiThread(new Runnable() { |
|
|
|
@Override |
|
|
|
public void run() { |
|
|
|
showToast("人脸SDK初始化失败"); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
} catch (Exception e) { |
|
|
|
String logMessage = "初始化人脸SDK时发生异常: " + e.getMessage(); |
|
|
|
android.util.Log.e("MainActivity", logMessage, e); |
|
|
|
LogManager.logError("FaceSDK", logMessage, e); |
|
|
|
runOnUiThread(new Runnable() { |
|
|
|
@Override |
|
|
|
public void run() { |
|
|
|
showToast("人脸SDK初始化异常: " + e.getMessage()); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 初始化人脸模型 |
|
|
|
* @param faceSDKManager FaceSDKManager实例 |
|
|
|
* @param initLock 初始化同步锁 |
|
|
|
* @param initCompleted 初始化完成标志 |
|
|
|
* @param initSuccess 初始化成功标志 |
|
|
|
*/ |
|
|
|
private void initFaceModels(com.baidu.idl.face.main.finance.manager.FaceSDKManager faceSDKManager, |
|
|
|
Object initLock, boolean[] initCompleted, boolean[] initSuccess) { |
|
|
|
try { |
|
|
|
String logMessage = "开始初始化人脸模型..."; |
|
|
|
android.util.Log.d("MainActivity", logMessage); |
|
|
|
LogManager.logInfo("FaceSDK", logMessage); |
|
|
|
|
|
|
|
faceSDKManager.initModel(this, new com.baidu.idl.face.main.finance.listener.SdkInitListener() { |
|
|
|
@Override |
|
|
|
public void initStart() { |
|
|
|
String logMessage = "人脸模型初始化开始..."; |
|
|
|
android.util.Log.d("MainActivity", logMessage); |
|
|
|
LogManager.logInfo("FaceSDK", logMessage); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void initLicenseSuccess() { |
|
|
|
// 授权已在initFaceSDK中处理 |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void initLicenseFail(int errorCode, String msg) { |
|
|
|
// 授权已在initFaceSDK中处理 |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void initModelSuccess() { |
|
|
|
String logMessage = "人脸SDK模型初始化成功"; |
|
|
|
android.util.Log.d("MainActivity", logMessage); |
|
|
|
LogManager.logInfo("FaceSDK", logMessage); |
|
|
|
synchronized (initLock) { |
|
|
|
initCompleted[0] = true; |
|
|
|
initSuccess[0] = true; |
|
|
|
initLock.notifyAll(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void initModelFail(int errorCode, String msg) { |
|
|
|
String logMessage = "人脸SDK模型初始化失败 - 错误码: " + errorCode + ", 错误信息: " + msg; |
|
|
|
android.util.Log.e("MainActivity", logMessage); |
|
|
|
LogManager.logError("FaceSDK", logMessage); |
|
|
|
synchronized (initLock) { |
|
|
|
initCompleted[0] = true; |
|
|
|
initSuccess[0] = false; |
|
|
|
initLock.notifyAll(); |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
} catch (Exception e) { |
|
|
|
String logMessage = "初始化人脸模型时发生异常: " + e.getMessage(); |
|
|
|
android.util.Log.e("MainActivity", logMessage, e); |
|
|
|
LogManager.logError("FaceSDK", logMessage, e); |
|
|
|
synchronized (initLock) { |
|
|
|
initCompleted[0] = true; |
|
|
|
initSuccess[0] = false; |
|
|
|
initLock.notifyAll(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
protected void onResume() { |
|
|
|
super.onResume(); |
|
|
|