Browse Source

add face auth

main
MTing 1 week ago
parent
commit
c80396a9de
  1. 169
      app/src/main/java/com/ouxuan/oxface/MainActivity.java

169
app/src/main/java/com/ouxuan/oxface/MainActivity.java

@ -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);
}
});
}
@ -891,11 +917,13 @@ public class MainActivity extends AppCompatActivity {
android.util.Log.e("MainActivity", logMessage, e);
LogManager.logError("FaceSDK", logMessage, e);
runOnUiThread(new Runnable() {
@Override
public void run() {
showToast("人脸SDK初始化异常: " + e.getMessage());
}
});
@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; // 清除引用
}
}

Loading…
Cancel
Save