|
|
@ -496,22 +496,8 @@ public class MainActivity extends AppCompatActivity { |
|
|
|
// 显示loading文字 |
|
|
|
buttonText.setText("正在进入..."); |
|
|
|
|
|
|
|
// 使用Handler延时5秒后执行 |
|
|
|
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() { |
|
|
|
@Override |
|
|
|
public void run() { |
|
|
|
// 恢复按钮状态 |
|
|
|
buttonEnter.setEnabled(true); |
|
|
|
buttonText.setText(originalText); |
|
|
|
|
|
|
|
// 显示成功消息并关闭弹框 |
|
|
|
showToast("进入 " + selectedPlatform + " 成功!"); |
|
|
|
dialog.dismiss(); |
|
|
|
currentDialog = null; // 清除引用 |
|
|
|
|
|
|
|
// 这里可以添加跳转到主界面的逻辑 |
|
|
|
} |
|
|
|
}, 5000); // 5秒延时 |
|
|
|
// 注意:这里不再使用延时,而是通过设备选择和SDK初始化流程来控制 |
|
|
|
// 实际的进入操作会在selectPadAndEnter方法中处理 |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@ -706,12 +692,7 @@ public class MainActivity extends AppCompatActivity { |
|
|
|
android.util.Log.d("MainActivity", "==============================="); |
|
|
|
|
|
|
|
// 新增:检查并初始化人脸SDK |
|
|
|
initializeFaceSDKIfNeeded(); |
|
|
|
|
|
|
|
dialog.dismiss(); |
|
|
|
currentDialog = null; // 清除引用 |
|
|
|
|
|
|
|
// 这里可以添加跳转到主界面的逻辑 |
|
|
|
initializeFaceSDKIfNeeded(dialog, buttonEnter, buttonText, originalText); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
@ -743,7 +724,7 @@ public class MainActivity extends AppCompatActivity { |
|
|
|
/** |
|
|
|
* 检查是否需要初始化人脸SDK并在需要时执行初始化 |
|
|
|
*/ |
|
|
|
private void initializeFaceSDKIfNeeded() { |
|
|
|
private void initializeFaceSDKIfNeeded(Dialog dialog, View buttonEnter, TextView buttonText, String originalText) { |
|
|
|
try { |
|
|
|
// 检查是否有人脸识别许可证 |
|
|
|
if (deviceSelectDataManager.hasFaceLicense()) { |
|
|
@ -757,18 +738,29 @@ public class MainActivity extends AppCompatActivity { |
|
|
|
new Thread(new Runnable() { |
|
|
|
@Override |
|
|
|
public void run() { |
|
|
|
initializeFaceSDK(faceLicense); |
|
|
|
initializeFaceSDK(faceLicense, dialog, buttonEnter, buttonText, originalText); |
|
|
|
} |
|
|
|
}).start(); |
|
|
|
} else { |
|
|
|
String logMessage = "未检测到有效的人脸识别许可证,跳过人脸SDK初始化"; |
|
|
|
String logMessage = "未检测到有效的人脸识别许可证,跳过人脸SDK初始化,直接进入人脸识别界面"; |
|
|
|
android.util.Log.w("MainActivity", logMessage); |
|
|
|
LogManager.logWarning("FaceSDK", logMessage); |
|
|
|
|
|
|
|
// 没有人脸识别许可证,直接进入人脸识别界面 |
|
|
|
runOnUiThread(new Runnable() { |
|
|
|
@Override |
|
|
|
public void run() { |
|
|
|
enterFaceRecognitionActivity(dialog); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
} catch (Exception e) { |
|
|
|
String logMessage = "检查人脸SDK初始化条件时发生异常: " + e.getMessage(); |
|
|
|
android.util.Log.e("MainActivity", logMessage, e); |
|
|
|
LogManager.logError("FaceSDK", logMessage, e); |
|
|
|
|
|
|
|
// 发生异常时,直接进入人脸识别界面 |
|
|
|
enterFaceRecognitionActivity(dialog); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@ -776,7 +768,7 @@ public class MainActivity extends AppCompatActivity { |
|
|
|
* 初始化人脸SDK |
|
|
|
* @param faceLicense 人脸识别许可证 |
|
|
|
*/ |
|
|
|
private void initializeFaceSDK(String faceLicense) { |
|
|
|
private void initializeFaceSDK(String faceLicense, Dialog dialog, View buttonEnter, TextView buttonText, String originalText) { |
|
|
|
try { |
|
|
|
String logMessage = "开始人脸SDK初始化流程..."; |
|
|
|
android.util.Log.d("MainActivity", logMessage); |
|
|
@ -790,7 +782,7 @@ public class MainActivity extends AppCompatActivity { |
|
|
|
@Override |
|
|
|
public void run() { |
|
|
|
Toast.makeText(MainActivity.this, |
|
|
|
configSuccess ? "配置文件加载成功" : "初始配置失败,已重置为默认配置", |
|
|
|
configSuccess ? "配置文件加载成功" : "已加载默认配置", |
|
|
|
Toast.LENGTH_SHORT).show(); |
|
|
|
} |
|
|
|
}); |
|
|
@ -799,6 +791,28 @@ public class MainActivity extends AppCompatActivity { |
|
|
|
com.baidu.idl.face.main.finance.manager.FaceSDKManager faceSDKManager = |
|
|
|
com.baidu.idl.face.main.finance.manager.FaceSDKManager.getInstance(); |
|
|
|
|
|
|
|
// 检查设备是否已经授权 |
|
|
|
if (faceSDKManager.initStatus == com.baidu.idl.face.main.finance.manager.FaceSDKManager.SDK_INIT_SUCCESS || |
|
|
|
faceSDKManager.initStatus == com.baidu.idl.face.main.finance.manager.FaceSDKManager.SDK_MODEL_LOAD_SUCCESS) { |
|
|
|
String alreadyAuthorizedMessage = "设备已授权,无需重复授权"; |
|
|
|
android.util.Log.d("MainActivity", alreadyAuthorizedMessage); |
|
|
|
LogManager.logInfo("FaceSDK", alreadyAuthorizedMessage); |
|
|
|
|
|
|
|
// 获取并记录授权信息 |
|
|
|
String licenseData = faceSDKManager.getLicenseData(this); |
|
|
|
LogManager.logInfo("FaceSDK", "设备授权有效期至: " + licenseData); |
|
|
|
|
|
|
|
// 直接进入人脸识别界面 |
|
|
|
runOnUiThread(new Runnable() { |
|
|
|
@Override |
|
|
|
public void run() { |
|
|
|
showToast("设备已授权"); |
|
|
|
enterFaceRecognitionActivity(dialog); |
|
|
|
} |
|
|
|
}); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// 创建同步锁以等待初始化完成 |
|
|
|
final Object initLock = new Object(); |
|
|
|
final boolean[] initCompleted = {false}; |
|
|
@ -822,7 +836,7 @@ public class MainActivity extends AppCompatActivity { |
|
|
|
android.util.Log.d("MainActivity", logMessage); |
|
|
|
LogManager.logInfo("FaceSDK", logMessage); |
|
|
|
// 授权成功后继续初始化模型 |
|
|
|
initFaceModels(faceSDKManager, initLock, initCompleted, initSuccess); |
|
|
|
initFaceModels(faceSDKManager, initLock, initCompleted, initSuccess, dialog, buttonEnter, buttonText, originalText); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
@ -835,6 +849,14 @@ public class MainActivity extends AppCompatActivity { |
|
|
|
initSuccess[0] = false; |
|
|
|
initLock.notifyAll(); |
|
|
|
} |
|
|
|
|
|
|
|
// 授权失败时,仍然进入人脸识别界面 |
|
|
|
runOnUiThread(new Runnable() { |
|
|
|
@Override |
|
|
|
public void run() { |
|
|
|
enterFaceRecognitionActivity(dialog); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
@ -872,16 +894,20 @@ public class MainActivity extends AppCompatActivity { |
|
|
|
@Override |
|
|
|
public void run() { |
|
|
|
showToast("人脸SDK初始化成功"); |
|
|
|
// 进入人脸识别界面 |
|
|
|
enterFaceRecognitionActivity(dialog); |
|
|
|
} |
|
|
|
}); |
|
|
|
} else { |
|
|
|
logMessage = "人脸SDK初始化失败"; |
|
|
|
logMessage = "人脸SDK初始化失败,但仍进入人脸识别界面"; |
|
|
|
android.util.Log.e("MainActivity", logMessage); |
|
|
|
LogManager.logError("FaceSDK", logMessage); |
|
|
|
runOnUiThread(new Runnable() { |
|
|
|
@Override |
|
|
|
public void run() { |
|
|
|
showToast("人脸SDK初始化失败"); |
|
|
|
showToast("人脸SDK初始化失败,但仍进入人脸识别界面"); |
|
|
|
// 即使初始化失败,也进入人脸识别界面 |
|
|
|
enterFaceRecognitionActivity(dialog); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
@ -894,6 +920,8 @@ public class MainActivity extends AppCompatActivity { |
|
|
|
@Override |
|
|
|
public void run() { |
|
|
|
showToast("人脸SDK初始化异常: " + e.getMessage()); |
|
|
|
// 发生异常时,仍然进入人脸识别界面 |
|
|
|
enterFaceRecognitionActivity(dialog); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
@ -907,7 +935,8 @@ public class MainActivity extends AppCompatActivity { |
|
|
|
* @param initSuccess 初始化成功标志 |
|
|
|
*/ |
|
|
|
private void initFaceModels(com.baidu.idl.face.main.finance.manager.FaceSDKManager faceSDKManager, |
|
|
|
Object initLock, boolean[] initCompleted, boolean[] initSuccess) { |
|
|
|
Object initLock, boolean[] initCompleted, boolean[] initSuccess, |
|
|
|
Dialog dialog, View buttonEnter, TextView buttonText, String originalText) { |
|
|
|
try { |
|
|
|
String logMessage = "开始初始化人脸模型..."; |
|
|
|
android.util.Log.d("MainActivity", logMessage); |
|
|
@ -944,6 +973,14 @@ public class MainActivity extends AppCompatActivity { |
|
|
|
initSuccess[0] = true; |
|
|
|
initLock.notifyAll(); |
|
|
|
} |
|
|
|
|
|
|
|
// 模型初始化成功后,进入人脸识别界面 |
|
|
|
runOnUiThread(new Runnable() { |
|
|
|
@Override |
|
|
|
public void run() { |
|
|
|
enterFaceRecognitionActivity(dialog); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
@ -956,6 +993,14 @@ public class MainActivity extends AppCompatActivity { |
|
|
|
initSuccess[0] = false; |
|
|
|
initLock.notifyAll(); |
|
|
|
} |
|
|
|
|
|
|
|
// 即使模型初始化失败,也进入人脸识别界面 |
|
|
|
runOnUiThread(new Runnable() { |
|
|
|
@Override |
|
|
|
public void run() { |
|
|
|
enterFaceRecognitionActivity(dialog); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
}); |
|
|
|
} catch (Exception e) { |
|
|
@ -967,6 +1012,58 @@ public class MainActivity extends AppCompatActivity { |
|
|
|
initSuccess[0] = false; |
|
|
|
initLock.notifyAll(); |
|
|
|
} |
|
|
|
|
|
|
|
// 发生异常时,仍然进入人脸识别界面 |
|
|
|
runOnUiThread(new Runnable() { |
|
|
|
@Override |
|
|
|
public void run() { |
|
|
|
enterFaceRecognitionActivity(dialog); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 进入人脸识别界面 |
|
|
|
* @param dialog 弹框实例 |
|
|
|
*/ |
|
|
|
private void enterFaceRecognitionActivity(Dialog dialog) { |
|
|
|
try { |
|
|
|
String logMessage = "准备进入人脸识别界面"; |
|
|
|
android.util.Log.d("MainActivity", logMessage); |
|
|
|
LogManager.logInfo("FaceSDK", logMessage); |
|
|
|
|
|
|
|
// 检查人脸SDK状态 |
|
|
|
com.baidu.idl.face.main.finance.manager.FaceSDKManager faceSDKManager = |
|
|
|
com.baidu.idl.face.main.finance.manager.FaceSDKManager.getInstance(); |
|
|
|
|
|
|
|
String sdkStatus = "SDK状态 - 授权: " + faceSDKManager.initStatus + ", 模型: " + faceSDKManager.initModelSuccess; |
|
|
|
android.util.Log.d("MainActivity", sdkStatus); |
|
|
|
LogManager.logInfo("FaceSDK", sdkStatus); |
|
|
|
|
|
|
|
// 关闭弹框 |
|
|
|
if (dialog != null && dialog.isShowing()) { |
|
|
|
dialog.dismiss(); |
|
|
|
} |
|
|
|
currentDialog = null; // 清除引用 |
|
|
|
|
|
|
|
// 跳转到人脸识别界面 |
|
|
|
Intent intent = new Intent(MainActivity.this, OXFaceOnlineActivity.class); |
|
|
|
startActivity(intent); |
|
|
|
|
|
|
|
logMessage = "已启动人脸识别界面"; |
|
|
|
android.util.Log.d("MainActivity", logMessage); |
|
|
|
LogManager.logInfo("FaceSDK", logMessage); |
|
|
|
} catch (Exception e) { |
|
|
|
String logMessage = "进入人脸识别界面时发生异常: " + e.getMessage(); |
|
|
|
android.util.Log.e("MainActivity", logMessage, e); |
|
|
|
LogManager.logError("FaceSDK", logMessage, e); |
|
|
|
|
|
|
|
// 即使发生异常,也要确保弹框被关闭 |
|
|
|
if (dialog != null && dialog.isShowing()) { |
|
|
|
dialog.dismiss(); |
|
|
|
} |
|
|
|
currentDialog = null; // 清除引用 |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|