From 49e8f35b5cfbb47c0879bab524461a98ecefd55b Mon Sep 17 00:00:00 2001 From: MTing Date: Thu, 25 Sep 2025 16:24:01 +0800 Subject: [PATCH] pad bar control --- .../main/java/com/ouxuan/oxface/DebugActivity.java | 9 +- .../main/java/com/ouxuan/oxface/MainActivity.java | 5 +- .../com/ouxuan/oxface/OXFaceOnlineActivity.java | 7 +- .../ouxuan/oxface/device/DeviceType7Manager.java | 52 +++- .../java/com/ouxuan/oxface/device/OxPadBar.java | 262 +++++++++++++++++++++ 5 files changed, 325 insertions(+), 10 deletions(-) create mode 100644 app/src/main/java/com/ouxuan/oxface/device/OxPadBar.java diff --git a/app/src/main/java/com/ouxuan/oxface/DebugActivity.java b/app/src/main/java/com/ouxuan/oxface/DebugActivity.java index ea31287..3d1b380 100644 --- a/app/src/main/java/com/ouxuan/oxface/DebugActivity.java +++ b/app/src/main/java/com/ouxuan/oxface/DebugActivity.java @@ -22,6 +22,7 @@ import com.ouxuan.oxface.device.DeviceUtils; import com.ouxuan.oxface.device.GateABController; import com.ouxuan.oxface.device.HuaWeiScanManager; import com.ouxuan.oxface.device.Ox485; +import com.ouxuan.oxface.device.OxPadBar; import com.ouxuan.oxface.device.RelayController; import com.ouxuan.oxface.network.NetworkEnvironmentManager; import com.ouxuan.oxface.network.NetworkManager; @@ -389,12 +390,12 @@ public class DebugActivity extends Activity { } /** - * 隐藏状态栏和导航栏(适用于V6设备) + * 隐藏状态栏和导航栏 */ private void hideStatusBar() { logMessage("触发隐藏状态栏和导航栏..."); try { - DeviceUtils.hidePadBarV6(this); + OxPadBar.hidePadBar(this); logMessage("隐藏状态栏和导航栏命令已发送"); showToast("隐藏状态栏和导航栏命令已发送"); } catch (Exception e) { @@ -405,12 +406,12 @@ public class DebugActivity extends Activity { } /** - * 显示状态栏和导航栏(适用于V6设备) + * 显示状态栏和导航栏 */ private void showStatusBar() { logMessage("触发显示状态栏和导航栏..."); try { - DeviceUtils.showPadBarV6(this); + OxPadBar.showPadBar(this); logMessage("显示状态栏和导航栏命令已发送"); showToast("显示状态栏和导航栏命令已发送"); } catch (Exception e) { diff --git a/app/src/main/java/com/ouxuan/oxface/MainActivity.java b/app/src/main/java/com/ouxuan/oxface/MainActivity.java index f78c74a..dd4edfa 100644 --- a/app/src/main/java/com/ouxuan/oxface/MainActivity.java +++ b/app/src/main/java/com/ouxuan/oxface/MainActivity.java @@ -31,6 +31,7 @@ import com.google.gson.Gson; import com.ouxuan.oxface.data.DeviceSelectDataManager; import com.ouxuan.oxface.data.LoginDataManager; import com.ouxuan.oxface.device.DeviceUtils; +import com.ouxuan.oxface.device.OxPadBar; import com.ouxuan.oxface.device.RelayController; import com.ouxuan.oxface.network.api.PadApiService; import com.ouxuan.oxface.network.api.UserApiService; @@ -1391,8 +1392,8 @@ public class MainActivity extends AppCompatActivity { } } - // TODO: 5. 初始化状态栏开关管理模块(待实现) - // StatusBarManager.initByDeviceType(deviceType); + // 5. 初始化状态栏开关管理模块 + OxPadBar.setDeviceType(deviceType); LogManager.logInfo("MainActivity", "设备类型相关模块初始化完成"); diff --git a/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java b/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java index c7d3249..52790da 100644 --- a/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java +++ b/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java @@ -48,6 +48,7 @@ import com.baidu.idl.main.facesdk.FaceInfo; import com.baidu.idl.main.facesdk.model.BDFaceImageInstance; import com.ouxuan.oxface.data.DeviceSelectDataManager; import com.ouxuan.oxface.device.DeviceUtils; +import com.ouxuan.oxface.device.OxPadBar; import com.ouxuan.oxface.orderOX.OrderVerificationResultActivity; import com.ouxuan.oxface.orderOX.OrderSelectionActivity; import com.ouxuan.oxface.orderOX.VerificationCodeActivity; @@ -312,12 +313,12 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi //禁用状态栏 private void initHideStateBar(){ // 隐藏状态栏和导航栏 - DeviceUtils.hidePadBarV6(this); + OxPadBar.hidePadBar(this); } //解锁状态栏 private void releaseHideStateBar(){ - // 隐藏状态栏和导航栏 - DeviceUtils.showPadBarV6(this); + // 显示状态栏和导航栏 + OxPadBar.showPadBar(this); } /** diff --git a/app/src/main/java/com/ouxuan/oxface/device/DeviceType7Manager.java b/app/src/main/java/com/ouxuan/oxface/device/DeviceType7Manager.java index 29b37af..4a2ed97 100644 --- a/app/src/main/java/com/ouxuan/oxface/device/DeviceType7Manager.java +++ b/app/src/main/java/com/ouxuan/oxface/device/DeviceType7Manager.java @@ -95,7 +95,7 @@ public class DeviceType7Manager { * 检查是否已初始化 * @return 是否已初始化 */ - private boolean isInitialized() { + public boolean isInitialized() { return yxApiInstance != null && context != null; } @@ -674,6 +674,56 @@ public class DeviceType7Manager { return value == YxGpioConstants.GpioState.HIGH; } + // ==================== 系统UI控制 ==================== + + /** + * 隐藏状态栏和导航栏(适用于第7批设备) + * @return 是否成功 + */ + public boolean hidePadBarV7() { + if (!isInitialized()) { + LogManager.logError(TAG, "hidePadBarV7: DeviceType7Manager未初始化"); + return false; + } + + try { + // 隐藏状态栏 + setStaBar(false); + // 隐藏导航栏 + setNavBar(false); + + LogManager.logInfo(TAG, "hidePadBarV7: 成功隐藏状态栏和导航栏"); + return true; + } catch (Exception e) { + LogManager.logError(TAG, "hidePadBarV7: 隐藏状态栏和导航栏失败", e); + return false; + } + } + + /** + * 显示状态栏和导航栏(适用于第7批设备) + * @return 是否成功 + */ + public boolean showPadBarV7() { + if (!isInitialized()) { + LogManager.logError(TAG, "showPadBarV7: DeviceType7Manager未初始化"); + return false; + } + + try { + // 显示状态栏 + setStaBar(true); + // 显示导航栏 + setNavBar(true); + + LogManager.logInfo(TAG, "showPadBarV7: 成功显示状态栏和导航栏"); + return true; + } catch (Exception e) { + LogManager.logError(TAG, "showPadBarV7: 显示状态栏和导航栏失败", e); + return false; + } + } + // ==================== 释放资源 ==================== /** diff --git a/app/src/main/java/com/ouxuan/oxface/device/OxPadBar.java b/app/src/main/java/com/ouxuan/oxface/device/OxPadBar.java new file mode 100644 index 0000000..06e5944 --- /dev/null +++ b/app/src/main/java/com/ouxuan/oxface/device/OxPadBar.java @@ -0,0 +1,262 @@ +package com.ouxuan.oxface.device; + +import android.content.Context; +import android.util.Log; + +import com.ouxuan.oxface.utils.LogManager; + +/** + * 状态栏和导航栏统一控制器 + * 根据设备类型自动调用对应的状态栏控制方法 + * + * @author AI Assistant + * @version 1.0 + * @date 2025/09/25 + */ +public class OxPadBar { + + private static final String TAG = "OxPadBar"; + + // 设备类型常量 + public static final int DEVICE_TYPE_V2 = 2; // 第2批设备 + public static final int DEVICE_TYPE_V5 = 5; // 第5批设备(第6批) + public static final int DEVICE_TYPE_V6 = 6; // 第6批设备(第7批) + public static final int DEVICE_TYPE_V7 = 7; // 第7批设备 + public static final int DEVICE_TYPE_V8 = 8; // 第8批设备 + + // 当前设备类型 + private static int currentDeviceType = -1; + + // 第七批设备管理器实例 + private static DeviceType7Manager deviceType7Manager; + + /** + * 设置设备类型 + * @param deviceType 设备类型 + */ + public static void setDeviceType(int deviceType) { + currentDeviceType = deviceType; + LogManager.logInfo(TAG, "设置设备类型: " + deviceType); + + // 如果是第7批设备,初始化管理器 + if (deviceType == DEVICE_TYPE_V6) { + deviceType7Manager = DeviceType7Manager.getInstance(); + } + } + + /** + * 获取当前设备类型 + * @return 设备类型 + */ + public static int getCurrentDeviceType() { + return currentDeviceType; + } + + /** + * 隐藏状态栏和导航栏 + * 根据设备类型自动调用对应的实现 + * @param context Android上下文 + * @return 是否成功 + */ + public static boolean hidePadBar(Context context) { + if (currentDeviceType == -1) { + LogManager.logError(TAG, "hidePadBar: 设备类型未设置"); + return false; + } + + LogManager.logInfo(TAG, "hidePadBar: 设备类型=" + currentDeviceType); + + switch (currentDeviceType) { + case DEVICE_TYPE_V5: // 第5批设备(第6批)- 使用V6方法 + return hidePadBarV5(context); + case DEVICE_TYPE_V6: // 第6批设备(第7批)- 使用DeviceType7Manager + return hidePadBarV6(context); + case DEVICE_TYPE_V2: // 第2批设备 - 预留接口 + return hidePadBarV2(context); + case DEVICE_TYPE_V7: // 第7批设备 - 预留接口 + return hidePadBarV7(context); + case DEVICE_TYPE_V8: // 第8批设备 - 预留接口 + return hidePadBarV8(context); + default: + LogManager.logError(TAG, "hidePadBar: 不支持的设备类型: " + currentDeviceType); + return false; + } + } + + /** + * 显示状态栏和导航栏 + * 根据设备类型自动调用对应的实现 + * @param context Android上下文 + * @return 是否成功 + */ + public static boolean showPadBar(Context context) { + if (currentDeviceType == -1) { + LogManager.logError(TAG, "showPadBar: 设备类型未设置"); + return false; + } + + LogManager.logInfo(TAG, "showPadBar: 设备类型=" + currentDeviceType); + + switch (currentDeviceType) { + case DEVICE_TYPE_V5: // 第5批设备(第6批)- 使用V6方法 + return showPadBarV5(context); + case DEVICE_TYPE_V6: // 第6批设备(第7批)- 使用DeviceType7Manager + return showPadBarV6(context); + case DEVICE_TYPE_V2: // 第2批设备 - 预留接口 + return showPadBarV2(context); + case DEVICE_TYPE_V7: // 第7批设备 - 预留接口 + return showPadBarV7(context); + case DEVICE_TYPE_V8: // 第8批设备 - 预留接口 + return showPadBarV8(context); + default: + LogManager.logError(TAG, "showPadBar: 不支持的设备类型: " + currentDeviceType); + return false; + } + } + + // ==================== 各设备类型实现 ==================== + + /** + * 第5批设备(第6批)- 隐藏状态栏和导航栏 + * @param context Android上下文 + * @return 是否成功 + */ + private static boolean hidePadBarV5(Context context) { + try { + DeviceUtils.hidePadBarV6(context); + LogManager.logInfo(TAG, "hidePadBarV5: 成功隐藏状态栏和导航栏"); + return true; + } catch (Exception e) { + LogManager.logError(TAG, "hidePadBarV5: 隐藏状态栏和导航栏失败", e); + return false; + } + } + + /** + * 第5批设备(第6批)- 显示状态栏和导航栏 + * @param context Android上下文 + * @return 是否成功 + */ + private static boolean showPadBarV5(Context context) { + try { + DeviceUtils.showPadBarV6(context); + LogManager.logInfo(TAG, "showPadBarV5: 成功显示状态栏和导航栏"); + return true; + } catch (Exception e) { + LogManager.logError(TAG, "showPadBarV5: 显示状态栏和导航栏失败", e); + return false; + } + } + + /** + * 第6批设备(第7批)- 隐藏状态栏和导航栏 + * @param context Android上下文 + * @return 是否成功 + */ + private static boolean hidePadBarV6(Context context) { + if (deviceType7Manager == null) { + LogManager.logError(TAG, "hidePadBarV6: DeviceType7Manager未初始化"); + return false; + } + + // 初始化DeviceType7Manager(如果还未初始化) + if (!deviceType7Manager.isInitialized()) { + boolean initSuccess = deviceType7Manager.init(context); + if (!initSuccess) { + LogManager.logError(TAG, "hidePadBarV6: DeviceType7Manager初始化失败"); + return false; + } + } + + return deviceType7Manager.hidePadBarV7(); + } + + /** + * 第6批设备(第7批)- 显示状态栏和导航栏 + * @param context Android上下文 + * @return 是否成功 + */ + private static boolean showPadBarV6(Context context) { + if (deviceType7Manager == null) { + LogManager.logError(TAG, "showPadBarV6: DeviceType7Manager未初始化"); + return false; + } + + // 初始化DeviceType7Manager(如果还未初始化) + if (!deviceType7Manager.isInitialized()) { + boolean initSuccess = deviceType7Manager.init(context); + if (!initSuccess) { + LogManager.logError(TAG, "showPadBarV6: DeviceType7Manager初始化失败"); + return false; + } + } + + return deviceType7Manager.showPadBarV7(); + } + + /** + * 第2批设备 - 隐藏状态栏和导航栏(预留接口) + * @param context Android上下文 + * @return 是否成功 + */ + private static boolean hidePadBarV2(Context context) { + // TODO: 实现第2批设备的状态栏控制逻辑 + LogManager.logInfo(TAG, "hidePadBarV2: 第2批设备状态栏控制暂未实现"); + return false; + } + + /** + * 第2批设备 - 显示状态栏和导航栏(预留接口) + * @param context Android上下文 + * @return 是否成功 + */ + private static boolean showPadBarV2(Context context) { + // TODO: 实现第2批设备的状态栏控制逻辑 + LogManager.logInfo(TAG, "showPadBarV2: 第2批设备状态栏控制暂未实现"); + return false; + } + + /** + * 第7批设备 - 隐藏状态栏和导航栏(预留接口) + * @param context Android上下文 + * @return 是否成功 + */ + private static boolean hidePadBarV7(Context context) { + // TODO: 实现第7批设备的状态栏控制逻辑 + LogManager.logInfo(TAG, "hidePadBarV7: 第7批设备状态栏控制暂未实现"); + return false; + } + + /** + * 第7批设备 - 显示状态栏和导航栏(预留接口) + * @param context Android上下文 + * @return 是否成功 + */ + private static boolean showPadBarV7(Context context) { + // TODO: 实现第7批设备的状态栏控制逻辑 + LogManager.logInfo(TAG, "showPadBarV7: 第7批设备状态栏控制暂未实现"); + return false; + } + + /** + * 第8批设备 - 隐藏状态栏和导航栏(预留接口) + * @param context Android上下文 + * @return 是否成功 + */ + private static boolean hidePadBarV8(Context context) { + // TODO: 实现第8批设备的状态栏控制逻辑 + LogManager.logInfo(TAG, "hidePadBarV8: 第8批设备状态栏控制暂未实现"); + return false; + } + + /** + * 第8批设备 - 显示状态栏和导航栏(预留接口) + * @param context Android上下文 + * @return 是否成功 + */ + private static boolean showPadBarV8(Context context) { + // TODO: 实现第8批设备的状态栏控制逻辑 + LogManager.logInfo(TAG, "showPadBarV8: 第8批设备状态栏控制暂未实现"); + return false; + } +} \ No newline at end of file