diff --git a/app/build.gradle b/app/build.gradle index c3f9a98..3bce076 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -24,8 +24,8 @@ android { debug { minifyEnabled false debuggable true - applicationIdSuffix ".debug" - versionNameSuffix "-debug" +// applicationIdSuffix ".debug" +// versionNameSuffix "-debug" // 调试版本优化配置 crunchPngs false diff --git a/app/src/main/java/com/ouxuan/oxface/DebugActivity.java b/app/src/main/java/com/ouxuan/oxface/DebugActivity.java index 8b870ee..2ed58a2 100644 --- a/app/src/main/java/com/ouxuan/oxface/DebugActivity.java +++ b/app/src/main/java/com/ouxuan/oxface/DebugActivity.java @@ -15,18 +15,15 @@ import android.widget.ScrollView; import android.widget.TextView; import android.widget.Toast; -// 恢复原来的导入 -//import com.baidu.idl.face.main.finance.manager.FaceSDKManager; - import com.baidu.idl.face.main.finance.listener.SdkInitListener; - import com.baidu.idl.face.main.finance.manager.FaceSDKManager; 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.RelayController; -import com.ouxuan.oxface.network.utils.NetworkUtils; +import com.ouxuan.oxface.network.NetworkEnvironmentManager; +import com.ouxuan.oxface.network.NetworkManager; import com.ouxuan.oxface.utils.AutoStartManager; import com.ouxuan.oxface.utils.BootSimulationHelper; import com.ouxuan.oxface.utils.LogManager; @@ -45,6 +42,7 @@ public class DebugActivity extends Activity { private RelayController relayController; private Ox485 ox485; private GateABController gateABController; + private NetworkEnvironmentManager environmentManager; // 添加环境管理器 @Override protected void onCreate(Bundle savedInstanceState) { @@ -71,6 +69,8 @@ public class DebugActivity extends Activity { ox485.initialize(this); gateABController = GateABController.getInstance(); gateABController.initialize(this); + // 初始化环境管理器 + environmentManager = NetworkEnvironmentManager.getInstance(this); } private void setupClickListeners() { @@ -309,6 +309,47 @@ public class DebugActivity extends Activity { run485QuickTest(); } }); + + // 添加切换网络环境按钮的点击监听器 + Button btnToggleNetworkEnv = findViewById(R.id.btnToggleNetworkEnv); + btnToggleNetworkEnv.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + toggleNetworkEnvironment(); + } + }); + } + + /** + * 切换网络环境 + */ + private void toggleNetworkEnvironment() { + logMessage("切换网络环境..."); + try { + // 获取当前环境 + int currentEnv = environmentManager.getCurrentEnvironment(); + String currentEnvName = (currentEnv == NetworkEnvironmentManager.ENVIRONMENT_PRODUCTION) ? "正式环境" : "测试环境"; + logMessage("当前环境: " + currentEnvName); + + // 切换到下一个环境 + int newEnv = environmentManager.toggleEnvironment(); + String newEnvName = (newEnv == NetworkEnvironmentManager.ENVIRONMENT_PRODUCTION) ? "正式环境" : "测试环境"; + logMessage("切换到: " + newEnvName); + + // 重新初始化NetworkManager的Retrofit + NetworkManager networkManager = NetworkManager.getInstance(this); + networkManager.reinitializeRetrofit(); + + // 重新初始化NetworkUtils中的API服务实例 + com.ouxuan.oxface.network.utils.NetworkUtils.reinitializeServices(); + + logMessage("网络环境切换完成,新的BASE_URL: " + environmentManager.getCurrentBaseUrl()); + showToast("网络环境已切换到" + newEnvName); + } catch (Exception e) { + Log.e(TAG, "切换网络环境失败", e); + logMessage("切换网络环境失败: " + e.getMessage()); + showToast("切换网络环境失败"); + } } /** diff --git a/app/src/main/java/com/ouxuan/oxface/network/NetworkConfig.java b/app/src/main/java/com/ouxuan/oxface/network/NetworkConfig.java index cbdf12e..e836078 100644 --- a/app/src/main/java/com/ouxuan/oxface/network/NetworkConfig.java +++ b/app/src/main/java/com/ouxuan/oxface/network/NetworkConfig.java @@ -7,8 +7,9 @@ package com.ouxuan.oxface.network; public class NetworkConfig { // API基础URL - 欧轩智能测试环境 -// public static final String BASE_URL = "https://facepad.ouxuanzhineng.cn/"; //正式 - public static final String BASE_URL = "https://testmanager.ouxuanzhineng.cn/"; //测试 + public static final String BASE_URL = "https://facepad.ouxuanzhineng.cn/"; //正式 + public static final String BASE_URL_FORMAT = "https://facepad.ouxuanzhineng.cn/"; //正式 + public static final String BASE_URL_TEST = "https://testmanager.ouxuanzhineng.cn/"; //测试 // API版本路径 public static final String API_VERSION = "v3/"; diff --git a/app/src/main/java/com/ouxuan/oxface/network/NetworkEnvironmentManager.java b/app/src/main/java/com/ouxuan/oxface/network/NetworkEnvironmentManager.java new file mode 100644 index 0000000..b9c6f91 --- /dev/null +++ b/app/src/main/java/com/ouxuan/oxface/network/NetworkEnvironmentManager.java @@ -0,0 +1,84 @@ +package com.ouxuan.oxface.network; + +import android.content.Context; +import android.content.SharedPreferences; + +/** + * 网络环境管理器 + * 用于管理正式环境和测试环境的切换 + */ +public class NetworkEnvironmentManager { + + private static final String PREF_NAME = "network_environment"; + private static final String KEY_CURRENT_ENV = "current_environment"; + + // 环境类型 + public static final int ENVIRONMENT_PRODUCTION = 0; // 正式环境 + public static final int ENVIRONMENT_TEST = 1; // 测试环境 + + private static NetworkEnvironmentManager instance; + private SharedPreferences sharedPreferences; + + private NetworkEnvironmentManager(Context context) { + sharedPreferences = context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE); + } + + public static NetworkEnvironmentManager getInstance(Context context) { + if (instance == null) { + synchronized (NetworkEnvironmentManager.class) { + if (instance == null) { + instance = new NetworkEnvironmentManager(context.getApplicationContext()); + } + } + } + return instance; + } + + /** + * 获取当前环境类型 + * @return 环境类型 (ENVIRONMENT_PRODUCTION 或 ENVIRONMENT_TEST) + */ + public int getCurrentEnvironment() { + return sharedPreferences.getInt(KEY_CURRENT_ENV, ENVIRONMENT_PRODUCTION); + } + + /** + * 切换到下一个环境 + * @return 切换后的环境类型 + */ + public int toggleEnvironment() { + int currentEnv = getCurrentEnvironment(); + int newEnv = (currentEnv == ENVIRONMENT_PRODUCTION) ? ENVIRONMENT_TEST : ENVIRONMENT_PRODUCTION; + saveEnvironment(newEnv); + return newEnv; + } + + /** + * 设置环境类型 + * @param environment 环境类型 + */ + public void setEnvironment(int environment) { + saveEnvironment(environment); + } + + /** + * 保存环境设置 + * @param environment 环境类型 + */ + private void saveEnvironment(int environment) { + sharedPreferences.edit().putInt(KEY_CURRENT_ENV, environment).apply(); + } + + /** + * 获取当前环境的BASE_URL + * @return BASE_URL + */ + public String getCurrentBaseUrl() { + int currentEnv = getCurrentEnvironment(); + if (currentEnv == ENVIRONMENT_TEST) { + return NetworkConfig.BASE_URL_TEST; + } else { + return NetworkConfig.BASE_URL_FORMAT; + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/ouxuan/oxface/network/NetworkManager.java b/app/src/main/java/com/ouxuan/oxface/network/NetworkManager.java index 4af9c16..e315cf5 100644 --- a/app/src/main/java/com/ouxuan/oxface/network/NetworkManager.java +++ b/app/src/main/java/com/ouxuan/oxface/network/NetworkManager.java @@ -41,10 +41,12 @@ public class NetworkManager { private Handler mainHandler; private Context context; private NetworkStabilityManager networkStabilityManager; + private NetworkEnvironmentManager environmentManager; // 添加环境管理器 private NetworkManager(Context context) { this.context = context.getApplicationContext(); this.networkStabilityManager = NetworkStabilityManager.getInstance(this.context); + this.environmentManager = NetworkEnvironmentManager.getInstance(this.context); // 初始化环境管理器 initOkHttpClient(context); initRetrofit(); initGson(); @@ -112,14 +114,31 @@ public class NetworkManager { * 初始化Retrofit */ private void initRetrofit() { + // 使用环境管理器获取当前环境的BASE_URL + String baseUrl = environmentManager.getCurrentBaseUrl(); retrofit = new Retrofit.Builder() - .baseUrl(NetworkConfig.BASE_URL) + .baseUrl(baseUrl) .client(okHttpClient) .addConverterFactory(GsonConverterFactory.create()) .build(); } /** + * 重新初始化Retrofit(用于环境切换后重新配置) + */ + public void reinitializeRetrofit() { + // 使用环境管理器获取当前环境的BASE_URL + String baseUrl = environmentManager.getCurrentBaseUrl(); + retrofit = new Retrofit.Builder() + .baseUrl(baseUrl) + .client(okHttpClient) + .addConverterFactory(GsonConverterFactory.create()) + .build(); + + LogManager.logOperation("NetworkManager", "Retrofit已重新初始化,当前BASE_URL: " + baseUrl); + } + + /** * 初始化Gson */ private void initGson() { @@ -399,4 +418,12 @@ public class NetworkManager { networkStabilityManager.stopNetworkMonitoring(); LogManager.logOperation("NetworkManager", "网络状态监控已停止"); } + + /** + * 获取环境管理器 + * @return NetworkEnvironmentManager实例 + */ + public NetworkEnvironmentManager getEnvironmentManager() { + return environmentManager; + } } \ No newline at end of file diff --git a/app/src/main/java/com/ouxuan/oxface/network/utils/NetworkUtils.java b/app/src/main/java/com/ouxuan/oxface/network/utils/NetworkUtils.java index 6e0756e..b15071f 100644 --- a/app/src/main/java/com/ouxuan/oxface/network/utils/NetworkUtils.java +++ b/app/src/main/java/com/ouxuan/oxface/network/utils/NetworkUtils.java @@ -36,6 +36,16 @@ public class NetworkUtils { } /** + * 重新初始化API服务(用于网络环境切换后重新创建服务实例) + */ + public static void reinitializeServices() { + if (networkManager != null) { + userApiService = networkManager.createService(UserApiService.class); + padApiService = networkManager.createService(PadApiService.class); + } + } + + /** * 用户登录 * @param username 用户名 * @param password 密码 diff --git a/app/src/main/res/layout/activity_debug.xml b/app/src/main/res/layout/activity_debug.xml index 0ec0dd4..a68b711 100644 --- a/app/src/main/res/layout/activity_debug.xml +++ b/app/src/main/res/layout/activity_debug.xml @@ -386,6 +386,37 @@ + + + +