Browse Source

add autologin & auto go face detect view

main
MTing 1 week ago
parent
commit
306031b6f4
  1. 54
      app/src/main/java/com/ouxuan/oxface/MainActivity.java
  2. 2
      app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java

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

@ -61,6 +61,9 @@ public class MainActivity extends AppCompatActivity {
private AutoStartManager autoStartManager; // 自启动管理器
private Dialog currentDialog; // 用于跟踪当前显示的Dialog防止WindowLeaked错误
// 添加自动启动状态变量
private boolean isAutoStart = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
// 在setContentView之前切换到正常主题解决白屏问题
@ -132,7 +135,7 @@ public class MainActivity extends AppCompatActivity {
private void checkAutoStartStatus() {
Intent intent = getIntent();
if (intent != null) {
boolean isAutoStart = intent.getBooleanExtra("auto_start", false);
isAutoStart = intent.getBooleanExtra("auto_start", false);
if (isAutoStart) {
String bootReason = intent.getStringExtra("boot_reason");
String startSource = intent.getStringExtra("start_source");
@ -165,7 +168,7 @@ public class MainActivity extends AppCompatActivity {
*/
private void checkAutoLogin() {
if (loginDataManager.canAutoLogin()) {
android.util.Log.d("MainActivity", "检测到有效的本地登录数据,尝试自动登录");
android.util.Log.d("MainActivity", "检测到有效的本地登录数据,尝试自动登录, isAutoStart: " + isAutoStart);
// 显示自动登录提示
showToast("检测到登录信息,正在自动登录...");
@ -177,7 +180,14 @@ public class MainActivity extends AppCompatActivity {
// 检查Activity是否仍然有效
if (!isFinishing() && !isDestroyed()) {
if (loginDataManager.isLoggedIn()) {
android.util.Log.d("MainActivity", "自动登录成功!isAutoStart: " + isAutoStart);
showToast("自动登录成功!");
// isAutoStart = true;
// 更新isAutoStart字段为true
isAutoStart = true;
showLoginSuccessDialog(loginDataManager.getLoginData());
} else {
android.util.Log.w("MainActivity", "自动登录失败,本地数据可能已失效");
@ -391,6 +401,8 @@ public class MainActivity extends AppCompatActivity {
* @param loginData 登录响应数据
*/
private void showLoginSuccessDialog(PadApiService.PadLoginResponse loginData) {
android.util.Log.d("MainActivity", "显示登录成功弹框, isAutoStart: " + isAutoStart);
// 创建自定义弹框
Dialog dialog = new Dialog(this);
currentDialog = dialog; // 保存Dialog引用以防止WindowLeaked错误
@ -522,6 +534,8 @@ public class MainActivity extends AppCompatActivity {
* @param spinner 下拉框组件
*/
private void loadPadList(Dialog dialog, Spinner spinner) {
android.util.Log.d("MainActivity", "开始加载Pad列表, isAutoStart: " + isAutoStart);
// 首先设置默认的加载中选项
String[] loadingItems = {"正在加载设备列表..."};
ArrayAdapter<String> loadingAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, loadingItems);
@ -545,6 +559,8 @@ public class MainActivity extends AppCompatActivity {
@Override
public void onSuccess(PadApiService.PadListResponse data) {
android.util.Log.d("MainActivity", "Pad列表加载成功, isAutoStart: " + isAutoStart);
// 加载成功更新下拉框数据
java.util.List<PadApiService.PadInfo> padList = data.getPads(); // 使用getPads()而不是getPadList()
@ -575,9 +591,22 @@ public class MainActivity extends AppCompatActivity {
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
// 检查是否为自动登录且只有一个真实设备如果是则自动选择
android.util.Log.d("MainActivity", "检查自动选择条件: isAutoStart=" + isAutoStart +
", padList.size()=" + (padList != null ? padList.size() : 0) +
", padList=" + (padList != null ? padList.toString() : "null"));
if (isAutoStart && padList != null && padList.size() == 1) {
// 清除padNames.add("请选择设备");
android.util.Log.d("MainActivity", "满足自动选择条件,开始自动选择设备");
// 自动选择唯一设备忽略"请选择设备"这类提示项
autoSelectSingleDevice(dialog, padList.get(0));
} else {
android.util.Log.d("MainActivity", "不满足自动选择条件,显示设备选择界面");
// 更新进入按钮的点击事件传入真实的Pad数据
updateEnterButtonClickListener(dialog, padList);
}
}
@Override
public void onError(int errorCode, String errorMessage) {
@ -610,6 +639,27 @@ public class MainActivity extends AppCompatActivity {
}
/**
* 自动选择唯一设备并进入使用
* @param dialog 弹框实例
* @param padInfo 唯一的Pad信息
*/
private void autoSelectSingleDevice(Dialog dialog, PadApiService.PadInfo padInfo) {
android.util.Log.d("MainActivity", "自动登录且只有一个设备,自动选择设备: " + padInfo.getHardwareName());
showToast("自动选择设备: " + padInfo.getHardwareName());
// 获取进入按钮并设置为加载状态
View buttonEnter = dialog.findViewById(R.id.buttonEnter);
if (buttonEnter != null) {
buttonEnter.setEnabled(false);
TextView buttonText = (TextView) buttonEnter;
buttonText.setText("正在进入...");
}
// 直接调用选择Pad并进入的方法
selectPadAndEnter(dialog, buttonEnter, padInfo);
}
/**
* 更新进入按钮的点击事件
* @param dialog 弹框实例
* @param padList Pad列表数据

2
app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java

@ -935,7 +935,7 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
//照片模糊
layoutCompareStatus.setVisibility(View.VISIBLE);
textCompareStatus.setTextColor(Color.parseColor("#fec133"));
textCompareStatus.setText("人脸模糊,请靠近");
textCompareStatus.setText("人脸模糊,请移动");
return;
}

Loading…
Cancel
Save