From 81d538589fd86c1fa140d696d76dfecd37a6c4b9 Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Sat, 29 Mar 2025 17:34:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E6=AD=A5=E5=AE=8C=E6=88=90=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E8=AE=BF=E9=97=AE=E8=BF=9E=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aes/build.properties | 4 +- aes/src/main/AndroidManifest.xml | 3 +- .../main/res/xml/network_security_config.xml | 7 ++ libaes/build.properties | 4 +- .../activitys/DrawerFragmentActivity.java | 3 + .../libaes/winboll/WinBollClientService.java | 32 ++++- .../WinBollServerConnectionTestThread.java | 118 ++++++++++++++++++ .../src/main/res/menu/toolbar_drawerbase.xml | 3 + 8 files changed, 166 insertions(+), 8 deletions(-) create mode 100644 aes/src/main/res/xml/network_security_config.xml create mode 100644 libaes/src/main/java/cc/winboll/studio/libaes/winboll/WinBollServerConnectionTestThread.java diff --git a/aes/build.properties b/aes/build.properties index 8ccd57f..9c0e439 100644 --- a/aes/build.properties +++ b/aes/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Sat Mar 29 12:08:03 HKT 2025 +#Sat Mar 29 09:33:15 GMT 2025 stageCount=2 libraryProject=libaes baseVersion=15.2 publishVersion=15.2.1 -buildCount=0 +buildCount=16 baseBetaVersion=15.2.2 diff --git a/aes/src/main/AndroidManifest.xml b/aes/src/main/AndroidManifest.xml index bbd1308..d123b21 100644 --- a/aes/src/main/AndroidManifest.xml +++ b/aes/src/main/AndroidManifest.xml @@ -10,7 +10,8 @@ android:label="@string/app_name" android:theme="@style/MyAESTheme" android:requestLegacyExternalStorage="true" - android:supportsRtl="true"> + android:supportsRtl="true" + android:networkSecurityConfig="@xml/network_security_config"> + + + www.winboll.cc + dev.winboll.cc + + diff --git a/libaes/build.properties b/libaes/build.properties index 9a9b3fa..9c0e439 100644 --- a/libaes/build.properties +++ b/libaes/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Sat Mar 29 12:07:46 HKT 2025 +#Sat Mar 29 09:33:15 GMT 2025 stageCount=2 libraryProject=libaes baseVersion=15.2 publishVersion=15.2.1 -buildCount=0 +buildCount=16 baseBetaVersion=15.2.2 diff --git a/libaes/src/main/java/cc/winboll/studio/libaes/activitys/DrawerFragmentActivity.java b/libaes/src/main/java/cc/winboll/studio/libaes/activitys/DrawerFragmentActivity.java index c2e6c56..b353823 100644 --- a/libaes/src/main/java/cc/winboll/studio/libaes/activitys/DrawerFragmentActivity.java +++ b/libaes/src/main/java/cc/winboll/studio/libaes/activitys/DrawerFragmentActivity.java @@ -27,6 +27,7 @@ import cc.winboll.studio.libaes.beans.AESThemeBean; import cc.winboll.studio.libaes.beans.DrawerMenuBean; import cc.winboll.studio.libaes.utils.AESThemeUtil; import cc.winboll.studio.libaes.views.ADrawerMenuListView; +import cc.winboll.studio.libappbase.GlobalApplication; import cc.winboll.studio.libappbase.LogUtils; import cc.winboll.studio.libappbase.winboll.IWinBollActivity; import com.baoyz.widget.PullRefreshLayout; @@ -175,6 +176,8 @@ public abstract class DrawerFragmentActivity extends AppCompatActivity implement for (int i = Integer.MIN_VALUE; i < Integer.MAX_VALUE; i++) { getString(i); } + } else if (R.id.item_log == item.getItemId()) { + GlobalApplication.getWinBollActivityManager().startLogActivity(this); } else if (R.id.item_about == item.getItemId()) { LogUtils.d(TAG, "onAbout"); } else if (android.R.id.home == item.getItemId()) { diff --git a/libaes/src/main/java/cc/winboll/studio/libaes/winboll/WinBollClientService.java b/libaes/src/main/java/cc/winboll/studio/libaes/winboll/WinBollClientService.java index 54192ca..edd8cf7 100644 --- a/libaes/src/main/java/cc/winboll/studio/libaes/winboll/WinBollClientService.java +++ b/libaes/src/main/java/cc/winboll/studio/libaes/winboll/WinBollClientService.java @@ -13,8 +13,10 @@ import android.content.ServiceConnection; import android.graphics.drawable.Drawable; import android.os.IBinder; import cc.winboll.studio.libaes.winboll.AssistantService; +import cc.winboll.studio.libappbase.GlobalApplication; import cc.winboll.studio.libappbase.LogUtils; import cc.winboll.studio.libappbase.utils.ServiceUtils; +import cc.winboll.studio.libapputils.utils.PrefUtils; import com.hjq.toast.ToastUtils; public class WinBollClientService extends Service implements IWinBollClientServiceBinder { @@ -161,16 +163,40 @@ public class WinBollClientService extends Service implements IWinBollClientServi // 设置运行状态 mIsWinBollClientThreadRunning = true; - //ToastUtils.show("run()"); + ToastUtils.show("run()"); // 唤醒守护进程 //wakeupAndBindAssistant(); + String username = ""; + String password = ""; + String targetUrl= ""; + if (GlobalApplication.isDebuging()) { + username = PrefUtils.getString(WinBollClientService.this, "metDevUserName", ""); + password = PrefUtils.getString(WinBollClientService.this, "metDevUserPassword", ""); + } else { + username = "WinBoll"; + password = "WinBollPowerByZhanGSKen"; + } + targetUrl = "https://" + (GlobalApplication.isDebuging() ?"dev": "www") + ".winboll.cc/api"; // 替换为实际测试的URL + while (mIsEnableService) { // 显示运行状态 - ToastUtils.show(TAG + " is running."); + LogUtils.d(TAG, String.format("targetUrl %s", targetUrl)); + + WinBollServerConnectionTestThread testThread = new WinBollServerConnectionTestThread( + targetUrl, + username, + password, + 15000, // 连接超时15秒 + 20000, // 读取超时20秒 + 3 // 最大重试次数 + ); + + testThread.start(); + try { - Thread.sleep(2 * 1000); + Thread.sleep(60 * 1000); } catch (InterruptedException e) { LogUtils.d(TAG, e, Thread.currentThread().getStackTrace()); } diff --git a/libaes/src/main/java/cc/winboll/studio/libaes/winboll/WinBollServerConnectionTestThread.java b/libaes/src/main/java/cc/winboll/studio/libaes/winboll/WinBollServerConnectionTestThread.java new file mode 100644 index 0000000..d2a1c34 --- /dev/null +++ b/libaes/src/main/java/cc/winboll/studio/libaes/winboll/WinBollServerConnectionTestThread.java @@ -0,0 +1,118 @@ +package cc.winboll.studio.libaes.winboll; + +/** + * @Author ZhanGSKen@AliYun.Com + * @Date 2025/03/29 15:57:28 + * @Describe WinBoll 服务器服务情况测试访问进程。 + */ +import cc.winboll.studio.libappbase.LogUtils; +import java.io.IOException; +import okhttp3.Authenticator; +import okhttp3.Credentials; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.Route; + +public class WinBollServerConnectionTestThread extends Thread { + + public static final String TAG = "WinBollClientService"; + + private final String url; + private final String username; + private final String password; + private final int connectTimeout; + private final int readTimeout; + private final int maxRetries; + private boolean testComplete = false; + + public WinBollServerConnectionTestThread(String url, String username, String password) { + this(url, username, password, 10000, 10000, 5); + } + + public WinBollServerConnectionTestThread(String url, String username, String password, + int connectTimeout, int readTimeout, int maxRetries) { + this.url = url; + this.username = username; + this.password = password; + this.connectTimeout = connectTimeout; + this.readTimeout = readTimeout; + this.maxRetries = maxRetries; + } + + @Override + public void run() { + OkHttpClient client = new OkHttpClient.Builder() + .connectTimeout(connectTimeout, java.util.concurrent.TimeUnit.MILLISECONDS) + .readTimeout(readTimeout, java.util.concurrent.TimeUnit.MILLISECONDS) + .authenticator(new Authenticator() { + @Override + public Request authenticate(Route route, Response response) throws IOException { + return response.request().newBuilder() + .header("Authorization", Credentials.basic(username, password)) + .build(); + } + }) + .build(); + + Request request = new Request.Builder() + .url(url) + .build(); + + int retryCount = 0; + while (!testComplete && retryCount <= maxRetries) { + try { + Response response = client.newCall(request).execute(); + if (response.isSuccessful()) { + String responseBody = response.body().string(); + if ("OK".equalsIgnoreCase(responseBody.trim())) { + LogUtils.d(TAG, "[" + new java.util.Date() + "] 测试成功,服务器返回OK"); + testComplete = true; + } else { + LogUtils.d(TAG, "[" + new java.util.Date() + "] 响应内容不符合预期:" + responseBody); + } + } else { + LogUtils.d(TAG, "[" + new java.util.Date() + "] 请求失败,状态码:" + response.code()); + } + } catch (IOException e) { + LogUtils.d(TAG, "[" + new java.util.Date() + "] 连接异常:" + e.getMessage()); + } + + if (!testComplete) { + try { + Thread.sleep(2000); // 等待2秒后重试 + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + LogUtils.d(TAG, "测试线程被中断"); + return; + } + retryCount++; + LogUtils.d(TAG, "[" + new java.util.Date() + "] 第" + retryCount + "次重试..."); + } + } + + if (testComplete) { + + } else { + LogUtils.d(TAG, "[" + new java.util.Date() + "] 达到最大重试次数,测试失败"); + } + } + +// public static void main(String[] args) { +// String targetUrl = "http://your-protected-server.com"; +// String username = "your_username"; +// String password = "your_password"; +// +// WinBollServerConnectionTestThread testThread = new WinBollServerConnectionTestThread( +// targetUrl, +// username, +// password, +// 15000, // 连接超时15秒 +// 20000, // 读取超时20秒 +// 3 // 最大重试次数 +// ); +// +// testThread.start(); +// } +} + diff --git a/libaes/src/main/res/menu/toolbar_drawerbase.xml b/libaes/src/main/res/menu/toolbar_drawerbase.xml index a4eb375..fb7c064 100644 --- a/libaes/src/main/res/menu/toolbar_drawerbase.xml +++ b/libaes/src/main/res/menu/toolbar_drawerbase.xml @@ -9,6 +9,9 @@ android:title="TestAppCrash"/> +