diff --git a/positions/build.properties b/positions/build.properties
index 2822afae..2d1f1dc2 100644
--- a/positions/build.properties
+++ b/positions/build.properties
@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
-#Wed Oct 01 12:10:23 GMT 2025
+#Wed Oct 01 12:59:11 GMT 2025
stageCount=4
libraryProject=
baseVersion=15.0
publishVersion=15.0.3
-buildCount=58
+buildCount=63
baseBetaVersion=15.0.4
diff --git a/positions/src/beta/res/values-zh/strings.xml b/positions/src/beta/res/values-zh/strings.xml
new file mode 100644
index 00000000..c413bdfd
--- /dev/null
+++ b/positions/src/beta/res/values-zh/strings.xml
@@ -0,0 +1,4 @@
+
+
+ @笨笨龙@
+
diff --git a/positions/src/main/java/cc/winboll/studio/positions/App.java b/positions/src/main/java/cc/winboll/studio/positions/App.java
index 216d70eb..9ca6fd7e 100644
--- a/positions/src/main/java/cc/winboll/studio/positions/App.java
+++ b/positions/src/main/java/cc/winboll/studio/positions/App.java
@@ -41,6 +41,7 @@ import java.util.Arrays;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.concurrent.atomic.AtomicBoolean;
+import cc.winboll.studio.libaes.utils.WinBoLLActivityManager;
public class App extends GlobalApplication {
@@ -51,6 +52,8 @@ public class App extends GlobalApplication {
super.onCreate();
setIsDebuging(BuildConfig.DEBUG);
+ WinBoLLActivityManager.init(this);
+
// 初始化 Toast 框架
ToastUtils.init(this);
// 设置 Toast 布局样式
diff --git a/positions/src/main/java/cc/winboll/studio/positions/MainActivity.java b/positions/src/main/java/cc/winboll/studio/positions/MainActivity.java
index 5a0dac08..f6fc071c 100644
--- a/positions/src/main/java/cc/winboll/studio/positions/MainActivity.java
+++ b/positions/src/main/java/cc/winboll/studio/positions/MainActivity.java
@@ -1,21 +1,20 @@
package cc.winboll.studio.positions;
-import android.content.ComponentName;
-import android.content.Context;
+import android.app.Activity;
import android.content.Intent;
-import android.content.ServiceConnection;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
-import android.os.IBinder;
import android.view.View;
+import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.Switch;
-import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
-import cc.winboll.studio.libappbase.LogActivity;
+import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity;
+import cc.winboll.studio.libaes.utils.WinBoLLActivityManager;
import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.positions.activities.LocationActivity;
+import cc.winboll.studio.positions.activities.WinBoLLActivity;
import cc.winboll.studio.positions.services.MainService;
import cc.winboll.studio.positions.utils.AppConfigsUtil;
import com.hjq.toast.ToastUtils;
@@ -26,17 +25,29 @@ import com.hjq.toast.ToastUtils;
* 2. 跳转至“位置管理页(LocationActivity)”和“日志页(LogActivity)”
* 3. Java 7 语法适配:无 Lambda、显式接口实现、兼容低版本
*/
-public class MainActivity extends AppCompatActivity {
+public class MainActivity extends WinBoLLActivity implements IWinBoLLActivity {
public static final String TAG = "MainActivity";
// 位置权限请求码(自定义唯一标识)
private static final int REQUEST_LOCATION_PERMISSIONS = 1001;
// UI 控件:服务控制开关、顶部工具栏
private Switch mServiceSwitch;
+ private Button mManagePositionsButton;
private Toolbar mToolbar;
// 服务相关:服务实例、绑定状态标记
//private DistanceRefreshService mDistanceService;
private boolean isServiceBound = false;
+
+
+ @Override
+ public Activity getActivity() {
+ return this;
+ }
+
+ @Override
+ public String getTag() {
+ return TAG;
+ }
// ---------------------- 服务连接回调(仅用于获取服务状态,不依赖服务执行核心逻辑) ----------------------
// private final ServiceConnection mServiceConn = new ServiceConnection() {
@@ -69,8 +80,8 @@ public class MainActivity extends AppCompatActivity {
// 1. 初始化顶部 Toolbar(保留原逻辑,设置页面标题)
initToolbar();
- // 2. 初始化服务控制开关(核心功能:绑定开关点击事件)
- initServiceSwitch();
+ // 2. 初始化其他控件
+ initViews();
// 3. 检查并申请位置权限(含后台GPS权限,确保服务启动前权限就绪)
if (!checkLocationPermissions()) {
requestLocationPermissions();
@@ -106,9 +117,12 @@ public class MainActivity extends AppCompatActivity {
/**
* 初始化服务控制开关:读取SP状态、绑定点击事件(含权限检查)
*/
- private void initServiceSwitch() {
+ private void initViews() {
mServiceSwitch = (Switch) findViewById(R.id.switch_service_control); // 显式强转
mServiceSwitch.setChecked(AppConfigsUtil.getInstance(this).isEnableMainService(true));
+
+ mManagePositionsButton = (Button) findViewById(R.id.btn_manage_positions);
+ mManagePositionsButton.setEnabled(mServiceSwitch.isChecked());
// Java 7 用匿名内部类实现 CompoundButton.OnCheckedChangeListener
mServiceSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@@ -136,6 +150,8 @@ public class MainActivity extends AppCompatActivity {
// }
stopService(new Intent(MainActivity.this, MainService.class));
}
+
+ mManagePositionsButton.setEnabled(isChecked);
}
});
}
@@ -166,7 +182,7 @@ public class MainActivity extends AppCompatActivity {
* 无服务状态限制,直接跳转
*/
public void onLog(View view) {
- LogActivity.startLogActivity(this); // 调用LogActivity静态方法跳转(保留原逻辑)
+ WinBoLLActivityManager.getInstance().startLogActivity(this); // 调用LogActivity静态方法跳转(保留原逻辑)
}
// ---------------------- 新增:位置权限处理(适配Java7 + 后台GPS权限) ----------------------
diff --git a/positions/src/main/java/cc/winboll/studio/positions/activities/LocationActivity.java b/positions/src/main/java/cc/winboll/studio/positions/activities/LocationActivity.java
index 7a01685e..6d9df27e 100644
--- a/positions/src/main/java/cc/winboll/studio/positions/activities/LocationActivity.java
+++ b/positions/src/main/java/cc/winboll/studio/positions/activities/LocationActivity.java
@@ -5,15 +5,16 @@ package cc.winboll.studio.positions.activities;
* @Date 2025/09/29 18:22
* @Describe 位置列表页面(直连服务数据+移除绑定,兼容服务私有字段)
*/
+import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Toast;
-import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
+import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity;
import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.positions.R;
import cc.winboll.studio.positions.adapters.PositionAdapter;
@@ -29,7 +30,7 @@ import java.util.ArrayList;
* 3. 保留“直连服务实例”的核心需求,避免绑定,但尊重服务数据私有性
* 4. 兼容Java 7语法,无Lambda、显式类型转换
*/
-public class LocationActivity extends AppCompatActivity {
+public class LocationActivity extends WinBoLLActivity implements IWinBoLLActivity {
public static final String TAG = "LocationActivity";
// SP配置常量(判断服务是否运行)
@@ -43,6 +44,17 @@ public class LocationActivity extends AppCompatActivity {
// 缓存服务数据(从服务PUBLIC方法获取,避免重复调用)
private ArrayList mCachedPositionList;
private ArrayList mCachedTaskList;
+
+
+ @Override
+ public Activity getActivity() {
+ return this;
+ }
+
+ @Override
+ public String getTag() {
+ return TAG;
+ }
// ---------------------- 页面生命周期(简化资源管理,无服务绑定) ----------------------
@Override
diff --git a/positions/src/main/java/cc/winboll/studio/positions/activities/WinBoLLActivity.java b/positions/src/main/java/cc/winboll/studio/positions/activities/WinBoLLActivity.java
new file mode 100644
index 00000000..3cf13b76
--- /dev/null
+++ b/positions/src/main/java/cc/winboll/studio/positions/activities/WinBoLLActivity.java
@@ -0,0 +1,60 @@
+package cc.winboll.studio.positions.activities;
+
+/**
+ * @Author ZhanGSKen&豆包大模型
+ * @Date 2025/09/29 00:11
+ * @Describe WinBoLL 窗口基础类
+ */
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.MenuItem;
+import androidx.appcompat.app.AppCompatActivity;
+import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity;
+import cc.winboll.studio.libaes.utils.WinBoLLActivityManager;
+import cc.winboll.studio.libappbase.LogUtils;
+
+public class WinBoLLActivity extends AppCompatActivity implements IWinBoLLActivity {
+
+ public static final String TAG = "WinBoLLActivity";
+
+ @Override
+ public Activity getActivity() {
+ return this;
+ }
+
+ @Override
+ public String getTag() {
+ return TAG;
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ LogUtils.d(TAG, String.format("onResume %s", getTag()));
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ /*if (item.getItemId() == R.id.item_log) {
+ WinBoLLActivityManager.getInstance().startLogActivity(this);
+ return true;
+ } else if (item.getItemId() == R.id.item_home) {
+ startActivity(new Intent(this, MainActivity.class));
+ return true;
+ }*/
+ // 在switch语句中处理每个ID,并在处理完后返回true,未处理的情况返回false。
+ return super.onOptionsItemSelected(item);
+ }
+
+ @Override
+ protected void onPostCreate(Bundle savedInstanceState) {
+ super.onPostCreate(savedInstanceState);
+ WinBoLLActivityManager.getInstance().add(this);
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ WinBoLLActivityManager.getInstance().registeRemove(this);
+ }
+}
diff --git a/positions/src/main/res/layout/activity_main.xml b/positions/src/main/res/layout/activity_main.xml
index 7673f9e3..50dfe057 100644
--- a/positions/src/main/res/layout/activity_main.xml
+++ b/positions/src/main/res/layout/activity_main.xml
@@ -25,7 +25,8 @@
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:onClick="onPositions"
- android:text="进入位置管理"/>
+ android:text="进入位置管理"
+ android:id="@+id/btn_manage_positions"/>