From 306031b6f47d834cdd42b22d70a5eef51cf37a70 Mon Sep 17 00:00:00 2001 From: MTing Date: Thu, 4 Sep 2025 11:06:45 +0800 Subject: [PATCH] add autologin & auto go face detect view --- .../main/java/com/ouxuan/oxface/MainActivity.java | 58 ++++++++++++++++++++-- .../com/ouxuan/oxface/OXFaceOnlineActivity.java | 2 +- 2 files changed, 55 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/ouxuan/oxface/MainActivity.java b/app/src/main/java/com/ouxuan/oxface/MainActivity.java index 8e6933d..7d853d2 100644 --- a/app/src/main/java/com/ouxuan/oxface/MainActivity.java +++ b/app/src/main/java/com/ouxuan/oxface/MainActivity.java @@ -60,6 +60,9 @@ public class MainActivity extends AppCompatActivity { private KeepAliveManager keepAliveManager; // 保持活跃管理器 private AutoStartManager autoStartManager; // 自启动管理器 private Dialog currentDialog; // 用于跟踪当前显示的Dialog,防止WindowLeaked错误 + + // 添加自动启动状态变量 + private boolean isAutoStart = false; @Override protected void onCreate(Bundle savedInstanceState) { @@ -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 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 padList = data.getPads(); // 使用getPads()而不是getPadList() @@ -575,8 +591,21 @@ public class MainActivity extends AppCompatActivity { adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); - // 更新进入按钮的点击事件,传入真实的Pad数据 - updateEnterButtonClickListener(dialog, padList); + // 检查是否为自动登录且只有一个真实设备,如果是则自动选择 + 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 @@ -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列表数据 diff --git a/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java b/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java index 9632b0d..b0d9fc8 100644 --- a/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java +++ b/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; }