mirror of
https://gitea.winboll.cc/ZhanGSKen/MyWinBoLL.git
synced 2026-08-14 05:27:10 +08:00
refactor: 将'特殊通道'重命名为'绿色通道'
- 重命名 LimitedTimeSpecialChannelService → LimitedTimeGreenChannelService - 重命名 LimitedTimeSpecialChannelView → LimitedTimeGreenChannelView - 重命名 view_limitedtimespecialchannel.xml → view_limitedtimegreenchannel.xml - 更新 activity_settings.xml 显示文本和控件引用 - 更新 AndroidManifest.xml Service 注册 - 更新 Rules.java 和 UnitTestActivity.java 引用 - 更新所有日志和注释中的'特殊'为'绿色' BREAKING CHANGE: 类名和布局文件名已变更,外部引用需同步更新
This commit is contained in:
@@ -254,7 +254,7 @@
|
|||||||
|
|
||||||
<activity android:name="cc.winboll.studio.contacts.activities.AboutActivity"/>
|
<activity android:name="cc.winboll.studio.contacts.activities.AboutActivity"/>
|
||||||
|
|
||||||
<service android:name="cc.winboll.studio.contacts.services.LimitedTimeSpecialChannelService"/>
|
<service android:name="cc.winboll.studio.contacts.services.LimitedTimeGreenChannelService"/>
|
||||||
|
|
||||||
<activity android:name="cc.winboll.studio.contacts.unittest.LayoutDraftPreViewActivity"/>
|
<activity android:name="cc.winboll.studio.contacts.unittest.LayoutDraftPreViewActivity"/>
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import androidx.appcompat.app.AppCompatActivity;
|
|||||||
import cc.winboll.studio.contacts.R;
|
import cc.winboll.studio.contacts.R;
|
||||||
import cc.winboll.studio.contacts.activities.SettingsActivity;
|
import cc.winboll.studio.contacts.activities.SettingsActivity;
|
||||||
import cc.winboll.studio.contacts.dun.Rules;
|
import cc.winboll.studio.contacts.dun.Rules;
|
||||||
import cc.winboll.studio.contacts.services.LimitedTimeSpecialChannelService;
|
import cc.winboll.studio.contacts.services.LimitedTimeGreenChannelService;
|
||||||
import cc.winboll.studio.contacts.utils.IntUtils;
|
import cc.winboll.studio.contacts.utils.IntUtils;
|
||||||
import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity;
|
import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity;
|
||||||
import cc.winboll.studio.libappbase.LogUtils;
|
import cc.winboll.studio.libappbase.LogUtils;
|
||||||
@@ -122,7 +122,7 @@ public class UnitTestActivity extends WinBollActivity implements IWinBoLLActivit
|
|||||||
new Thread(new Runnable(){
|
new Thread(new Runnable(){
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
LimitedTimeSpecialChannelService.unitTest(UnitTestActivity.this);
|
LimitedTimeGreenChannelService.unitTest(UnitTestActivity.this);
|
||||||
}
|
}
|
||||||
}).start();
|
}).start();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import cc.winboll.studio.contacts.activities.SettingsActivity;
|
|||||||
import cc.winboll.studio.contacts.bobulltoon.TomCat;
|
import cc.winboll.studio.contacts.bobulltoon.TomCat;
|
||||||
import cc.winboll.studio.contacts.model.PhoneConnectRuleBean;
|
import cc.winboll.studio.contacts.model.PhoneConnectRuleBean;
|
||||||
import cc.winboll.studio.contacts.model.SettingsBean;
|
import cc.winboll.studio.contacts.model.SettingsBean;
|
||||||
import cc.winboll.studio.contacts.services.LimitedTimeSpecialChannelService;
|
import cc.winboll.studio.contacts.services.LimitedTimeGreenChannelService;
|
||||||
import cc.winboll.studio.contacts.services.MainService;
|
import cc.winboll.studio.contacts.services.MainService;
|
||||||
import cc.winboll.studio.contacts.utils.ContactUtils;
|
import cc.winboll.studio.contacts.utils.ContactUtils;
|
||||||
import cc.winboll.studio.contacts.utils.IntUtils;
|
import cc.winboll.studio.contacts.utils.IntUtils;
|
||||||
@@ -172,9 +172,9 @@ public class Rules {
|
|||||||
LogUtils.d(TAG, String.format("isDefend == %s\nisConnect == %s", isDefend, isConnect));
|
LogUtils.d(TAG, String.format("isDefend == %s\nisConnect == %s", isDefend, isConnect));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 限时特殊通道打开时返回连接
|
// 限时绿色通道打开时返回连接
|
||||||
if (!isDefend && LimitedTimeSpecialChannelService.isServiceRunning()) {
|
if (!isDefend && LimitedTimeGreenChannelService.isServiceRunning()) {
|
||||||
LogUtils.d(TAG, String.format("PhoneNumber %s\n and Limited Time Special Channel Service Is Running.", phoneNumber));
|
LogUtils.d(TAG, String.format("PhoneNumber %s\n and Limited Time Green Channel Service Is Running.", phoneNumber));
|
||||||
isDefend = true;
|
isDefend = true;
|
||||||
isConnect = true;
|
isConnect = true;
|
||||||
LogUtils.d(TAG, String.format("isDefend == %s\nisConnect == %s", isDefend, isConnect));
|
LogUtils.d(TAG, String.format("isDefend == %s\nisConnect == %s", isDefend, isConnect));
|
||||||
|
|||||||
+6
-6
@@ -13,17 +13,17 @@ import cc.winboll.studio.libappbase.LogUtils;
|
|||||||
* @Author 豆包&ZhanGSKen<zhangsken@qq.com>
|
* @Author 豆包&ZhanGSKen<zhangsken@qq.com>
|
||||||
* @Date 2026/04/18 15:00:00 (GMT+8)
|
* @Date 2026/04/18 15:00:00 (GMT+8)
|
||||||
* @LastEditTime 2026/04/22 17:20:00 (GMT+8)
|
* @LastEditTime 2026/04/22 17:20:00 (GMT+8)
|
||||||
* @Describe 限时特殊通道服务
|
* @Describe 限时绿色通道服务
|
||||||
* 提供安全的服务启动、令牌校验及循环任务管理
|
* 提供安全的服务启动、令牌校验及循环任务管理
|
||||||
* 新增功能:
|
* 新增功能:
|
||||||
* 1. 计时过程中实时输出剩余秒数
|
* 1. 计时过程中实时输出剩余秒数
|
||||||
* 2. 服务销毁前,发送本地广播通知应用内其他组件,并携带剩余秒数信息
|
* 2. 服务销毁前,发送本地广播通知应用内其他组件,并携带剩余秒数信息
|
||||||
* 3. 每秒发送一次倒计时状态的本地广播
|
* 3. 每秒发送一次倒计时状态的本地广播
|
||||||
*/
|
*/
|
||||||
public class LimitedTimeSpecialChannelService extends Service {
|
public class LimitedTimeGreenChannelService extends Service {
|
||||||
|
|
||||||
// ========================= 常量定义 =========================
|
// ========================= 常量定义 =========================
|
||||||
public static final String TAG = "LimitedTimeSpecialChannelService";
|
public static final String TAG = "LimitedTimeGreenChannelService";
|
||||||
public static final String EXTRA_DELAY_MILLIS = "EXTRA_DELAY_MILLIS";
|
public static final String EXTRA_DELAY_MILLIS = "EXTRA_DELAY_MILLIS";
|
||||||
private static final String EXTRA_SECURITY_TOKEN = "EXTRA_SECURITY_TOKEN";
|
private static final String EXTRA_SECURITY_TOKEN = "EXTRA_SECURITY_TOKEN";
|
||||||
|
|
||||||
@@ -44,7 +44,7 @@ public class LimitedTimeSpecialChannelService extends Service {
|
|||||||
*/
|
*/
|
||||||
public static final String mValidToken = "VALID_TOKEN_" + System.currentTimeMillis();
|
public static final String mValidToken = "VALID_TOKEN_" + System.currentTimeMillis();
|
||||||
|
|
||||||
private static volatile LimitedTimeSpecialChannelService sInstance = null;
|
private static volatile LimitedTimeGreenChannelService sInstance = null;
|
||||||
private static volatile boolean sIsServiceRunning = false;
|
private static volatile boolean sIsServiceRunning = false;
|
||||||
|
|
||||||
// ========================= 成员变量 =========================
|
// ========================= 成员变量 =========================
|
||||||
@@ -73,7 +73,7 @@ public class LimitedTimeSpecialChannelService extends Service {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 构建Intent传递参数
|
// 构建Intent传递参数
|
||||||
Intent intent = new Intent(context, LimitedTimeSpecialChannelService.class);
|
Intent intent = new Intent(context, LimitedTimeGreenChannelService.class);
|
||||||
intent.putExtra(EXTRA_SECURITY_TOKEN, mValidToken);
|
intent.putExtra(EXTRA_SECURITY_TOKEN, mValidToken);
|
||||||
intent.putExtra(EXTRA_DELAY_MILLIS, delayMillis);
|
intent.putExtra(EXTRA_DELAY_MILLIS, delayMillis);
|
||||||
|
|
||||||
@@ -93,7 +93,7 @@ public class LimitedTimeSpecialChannelService extends Service {
|
|||||||
LogUtils.w(TAG, "停止失败,上下文为null");
|
LogUtils.w(TAG, "停止失败,上下文为null");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Intent intent = new Intent(context, LimitedTimeSpecialChannelService.class);
|
Intent intent = new Intent(context, LimitedTimeGreenChannelService.class);
|
||||||
context.stopService(intent);
|
context.stopService(intent);
|
||||||
LogUtils.i(TAG, "服务停止命令已发出");
|
LogUtils.i(TAG, "服务停止命令已发出");
|
||||||
}
|
}
|
||||||
+20
-20
@@ -13,7 +13,7 @@ import android.widget.LinearLayout;
|
|||||||
import android.widget.Switch;
|
import android.widget.Switch;
|
||||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||||
import cc.winboll.studio.contacts.R;
|
import cc.winboll.studio.contacts.R;
|
||||||
import cc.winboll.studio.contacts.services.LimitedTimeSpecialChannelService;
|
import cc.winboll.studio.contacts.services.LimitedTimeGreenChannelService;
|
||||||
import cc.winboll.studio.libappbase.LogUtils;
|
import cc.winboll.studio.libappbase.LogUtils;
|
||||||
import cc.winboll.studio.libappbase.ToastUtils;
|
import cc.winboll.studio.libappbase.ToastUtils;
|
||||||
|
|
||||||
@@ -21,7 +21,7 @@ import cc.winboll.studio.libappbase.ToastUtils;
|
|||||||
* @Author 豆包&ZhanGSKen<zhangsken@qq.com>
|
* @Author 豆包&ZhanGSKen<zhangsken@qq.com>
|
||||||
* @Date 2026/04/18 15:05:00 (GMT+8)
|
* @Date 2026/04/18 15:05:00 (GMT+8)
|
||||||
* @LastEditTime 2026/04/22 17:30:00 (GMT+8)
|
* @LastEditTime 2026/04/22 17:30:00 (GMT+8)
|
||||||
* @Describe 限时特殊通道视图
|
* @Describe 限时绿色通道视图
|
||||||
* 功能说明:
|
* 功能说明:
|
||||||
* 1. Switch 打开时,EditText 不可编辑,布局背景变为绿色,加减按钮不可用
|
* 1. Switch 打开时,EditText 不可编辑,布局背景变为绿色,加减按钮不可用
|
||||||
* 2. Switch 关闭时,EditText 可编辑,布局背景恢复为白色,加减按钮恢复可用
|
* 2. Switch 关闭时,EditText 可编辑,布局背景恢复为白色,加减按钮恢复可用
|
||||||
@@ -31,10 +31,10 @@ import cc.winboll.studio.libappbase.ToastUtils;
|
|||||||
* 6. 新增快速设置按钮(btn_thisSeconds),点击直接设置为当前量级3600秒
|
* 6. 新增快速设置按钮(btn_thisSeconds),点击直接设置为当前量级3600秒
|
||||||
* 7. [新增] 服务销毁时,恢复EditText显示为倒计时剩余秒数
|
* 7. [新增] 服务销毁时,恢复EditText显示为倒计时剩余秒数
|
||||||
*/
|
*/
|
||||||
public class LimitedTimeSpecialChannelView extends LinearLayout {
|
public class LimitedTimeGreenChannelView extends LinearLayout {
|
||||||
|
|
||||||
// ====================== 常量定义 =========================
|
// ====================== 常量定义 =========================
|
||||||
public static final String TAG = "LimitedTimeSpecialChannelView";
|
public static final String TAG = "LimitedTimeGreenChannelView";
|
||||||
// 定义秒数增量的量级
|
// 定义秒数增量的量级
|
||||||
private static final long SECONDS_INCREMENT = 3600;
|
private static final long SECONDS_INCREMENT = 3600;
|
||||||
|
|
||||||
@@ -50,17 +50,17 @@ public class LimitedTimeSpecialChannelView extends LinearLayout {
|
|||||||
private android.content.BroadcastReceiver mCountdownReceiver;
|
private android.content.BroadcastReceiver mCountdownReceiver;
|
||||||
|
|
||||||
// ====================== 构造函数 =========================
|
// ====================== 构造函数 =========================
|
||||||
public LimitedTimeSpecialChannelView(Context context) {
|
public LimitedTimeGreenChannelView(Context context) {
|
||||||
super(context);
|
super(context);
|
||||||
initView(context);
|
initView(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
public LimitedTimeSpecialChannelView(Context context, AttributeSet attrs) {
|
public LimitedTimeGreenChannelView(Context context, AttributeSet attrs) {
|
||||||
super(context, attrs);
|
super(context, attrs);
|
||||||
initView(context);
|
initView(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
public LimitedTimeSpecialChannelView(Context context, AttributeSet attrs, int defStyleAttr) {
|
public LimitedTimeGreenChannelView(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||||
super(context, attrs, defStyleAttr);
|
super(context, attrs, defStyleAttr);
|
||||||
initView(context);
|
initView(context);
|
||||||
}
|
}
|
||||||
@@ -71,7 +71,7 @@ public class LimitedTimeSpecialChannelView extends LinearLayout {
|
|||||||
this.mContext = context;
|
this.mContext = context;
|
||||||
|
|
||||||
// 加载布局文件
|
// 加载布局文件
|
||||||
LayoutInflater.from(context).inflate(R.layout.view_limitedtimespecialchannel, this, true);
|
LayoutInflater.from(context).inflate(R.layout.view_limitedtimegreenchannel, this, true);
|
||||||
LogUtils.i(TAG, "布局文件加载完成");
|
LogUtils.i(TAG, "布局文件加载完成");
|
||||||
|
|
||||||
// 绑定控件ID
|
// 绑定控件ID
|
||||||
@@ -192,9 +192,9 @@ public class LimitedTimeSpecialChannelView extends LinearLayout {
|
|||||||
updateUIState(!isChecked);
|
updateUIState(!isChecked);
|
||||||
|
|
||||||
if (isChecked) {
|
if (isChecked) {
|
||||||
startLimitedTimeSpecialChannelService();
|
startLimitedTimeGreenChannelService();
|
||||||
} else {
|
} else {
|
||||||
LimitedTimeSpecialChannelService.stopService(mContext);
|
LimitedTimeGreenChannelService.stopService(mContext);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -222,11 +222,11 @@ public class LimitedTimeSpecialChannelView extends LinearLayout {
|
|||||||
*/
|
*/
|
||||||
private void registerServiceDestroyedListener() {
|
private void registerServiceDestroyedListener() {
|
||||||
LogUtils.i(TAG, "注册服务销毁广播监听");
|
LogUtils.i(TAG, "注册服务销毁广播监听");
|
||||||
IntentFilter filter = new IntentFilter(LimitedTimeSpecialChannelService.ACTION_SERVICE_DESTROYED);
|
IntentFilter filter = new IntentFilter(LimitedTimeGreenChannelService.ACTION_SERVICE_DESTROYED);
|
||||||
LocalBroadcastManager.getInstance(mContext).registerReceiver(new android.content.BroadcastReceiver() {
|
LocalBroadcastManager.getInstance(mContext).registerReceiver(new android.content.BroadcastReceiver() {
|
||||||
@Override
|
@Override
|
||||||
public void onReceive(Context context, Intent intent) {
|
public void onReceive(Context context, Intent intent) {
|
||||||
if (LimitedTimeSpecialChannelService.ACTION_SERVICE_DESTROYED.equals(intent.getAction())) {
|
if (LimitedTimeGreenChannelService.ACTION_SERVICE_DESTROYED.equals(intent.getAction())) {
|
||||||
LogUtils.i(TAG, "收到服务销毁广播,执行恢复操作");
|
LogUtils.i(TAG, "收到服务销毁广播,执行恢复操作");
|
||||||
|
|
||||||
// 1. 恢复开关状态
|
// 1. 恢复开关状态
|
||||||
@@ -236,7 +236,7 @@ public class LimitedTimeSpecialChannelView extends LinearLayout {
|
|||||||
|
|
||||||
// 2. [核心修改] 检索并设置倒计时剩余秒数参数
|
// 2. [核心修改] 检索并设置倒计时剩余秒数参数
|
||||||
// 从广播附加数据中获取之前服务发送的剩余秒数
|
// 从广播附加数据中获取之前服务发送的剩余秒数
|
||||||
long remainingSeconds = intent.getLongExtra(LimitedTimeSpecialChannelService.EXTRA_REMAINING_SECONDS, 0);
|
long remainingSeconds = intent.getLongExtra(LimitedTimeGreenChannelService.EXTRA_REMAINING_SECONDS, 0);
|
||||||
// 实际倒计时消耗冲正
|
// 实际倒计时消耗冲正
|
||||||
remainingSeconds -= 1;
|
remainingSeconds -= 1;
|
||||||
// 倒计时秒数0值保底
|
// 倒计时秒数0值保底
|
||||||
@@ -266,8 +266,8 @@ public class LimitedTimeSpecialChannelView extends LinearLayout {
|
|||||||
mCountdownReceiver = new android.content.BroadcastReceiver() {
|
mCountdownReceiver = new android.content.BroadcastReceiver() {
|
||||||
@Override
|
@Override
|
||||||
public void onReceive(Context context, Intent intent) {
|
public void onReceive(Context context, Intent intent) {
|
||||||
if (LimitedTimeSpecialChannelService.ACTION_COUNTDOWN_TICK.equals(intent.getAction())) {
|
if (LimitedTimeGreenChannelService.ACTION_COUNTDOWN_TICK.equals(intent.getAction())) {
|
||||||
long remainingSeconds = intent.getLongExtra(LimitedTimeSpecialChannelService.EXTRA_REMAINING_SECONDS, 0);
|
long remainingSeconds = intent.getLongExtra(LimitedTimeGreenChannelService.EXTRA_REMAINING_SECONDS, 0);
|
||||||
if (mEtSeconds != null) {
|
if (mEtSeconds != null) {
|
||||||
mEtSeconds.setText(String.valueOf(remainingSeconds));
|
mEtSeconds.setText(String.valueOf(remainingSeconds));
|
||||||
}
|
}
|
||||||
@@ -278,7 +278,7 @@ public class LimitedTimeSpecialChannelView extends LinearLayout {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
IntentFilter filter = new IntentFilter(LimitedTimeSpecialChannelService.ACTION_COUNTDOWN_TICK);
|
IntentFilter filter = new IntentFilter(LimitedTimeGreenChannelService.ACTION_COUNTDOWN_TICK);
|
||||||
LocalBroadcastManager.getInstance(mContext).registerReceiver(mCountdownReceiver, filter);
|
LocalBroadcastManager.getInstance(mContext).registerReceiver(mCountdownReceiver, filter);
|
||||||
LogUtils.i(TAG, "倒计时广播注册成功");
|
LogUtils.i(TAG, "倒计时广播注册成功");
|
||||||
}
|
}
|
||||||
@@ -286,8 +286,8 @@ public class LimitedTimeSpecialChannelView extends LinearLayout {
|
|||||||
/**
|
/**
|
||||||
* 启动限时特殊通道服务
|
* 启动限时特殊通道服务
|
||||||
*/
|
*/
|
||||||
private void startLimitedTimeSpecialChannelService() {
|
private void startLimitedTimeGreenChannelService() {
|
||||||
LogUtils.i(TAG, "准备启动限时特殊通道服务");
|
LogUtils.i(TAG, "准备启动限时绿色通道服务");
|
||||||
String secondsStr = mEtSeconds.getText().toString().trim();
|
String secondsStr = mEtSeconds.getText().toString().trim();
|
||||||
if (secondsStr.isEmpty()) {
|
if (secondsStr.isEmpty()) {
|
||||||
LogUtils.w(TAG, "输入框为空,使用默认值 3600 秒");
|
LogUtils.w(TAG, "输入框为空,使用默认值 3600 秒");
|
||||||
@@ -299,8 +299,8 @@ public class LimitedTimeSpecialChannelView extends LinearLayout {
|
|||||||
long delayMillis = seconds * 1000;
|
long delayMillis = seconds * 1000;
|
||||||
|
|
||||||
LogUtils.i(TAG, "启动参数 - 输入秒数: " + seconds + ", 转换毫秒: " + delayMillis);
|
LogUtils.i(TAG, "启动参数 - 输入秒数: " + seconds + ", 转换毫秒: " + delayMillis);
|
||||||
//ToastUtils.show("调用 LimitedTimeSpecialChannelService 服务");
|
//ToastUtils.show("调用 LimitedTimeGreenChannelService 服务");
|
||||||
LimitedTimeSpecialChannelService.startService(mContext, delayMillis);
|
LimitedTimeGreenChannelService.startService(mContext, delayMillis);
|
||||||
} catch (NumberFormatException e) {
|
} catch (NumberFormatException e) {
|
||||||
LogUtils.e(TAG, "输入的秒数格式错误: " + secondsStr, e);
|
LogUtils.e(TAG, "输入的秒数格式错误: " + secondsStr, e);
|
||||||
}
|
}
|
||||||
@@ -67,12 +67,12 @@
|
|||||||
<TextView
|
<TextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="特殊通道设置:"/>
|
android:text="绿色通道设置:"/>
|
||||||
|
|
||||||
<cc.winboll.studio.contacts.views.LimitedTimeSpecialChannelView
|
<cc.winboll.studio.contacts.views.LimitedTimeGreenChannelView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:id="@+id/view_LimitedTimeSpecialChannel"/>
|
android:id="@+id/view_LimitedTimeGreenChannel"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user