diff --git a/appbase/build.properties b/appbase/build.properties
index 30ec021..7a9c036 100644
--- a/appbase/build.properties
+++ b/appbase/build.properties
@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
-#Sat Feb 15 04:45:53 GMT 2025
+#Sat Feb 15 11:51:34 GMT 2025
stageCount=2
libraryProject=libappbase
baseVersion=1.5
publishVersion=1.5.1
-buildCount=97
+buildCount=123
baseBetaVersion=1.5.2
diff --git a/appbase/src/main/AndroidManifest.xml b/appbase/src/main/AndroidManifest.xml
index 4077ece..2c67860 100644
--- a/appbase/src/main/AndroidManifest.xml
+++ b/appbase/src/main/AndroidManifest.xml
@@ -60,7 +60,26 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/appbase/src/main/java/cc/winboll/studio/appbase/threads/MainServiceThread.java b/appbase/src/main/java/cc/winboll/studio/appbase/threads/MainServiceThread.java
index ec2059f..c8c9066 100644
--- a/appbase/src/main/java/cc/winboll/studio/appbase/threads/MainServiceThread.java
+++ b/appbase/src/main/java/cc/winboll/studio/appbase/threads/MainServiceThread.java
@@ -4,10 +4,13 @@ package cc.winboll.studio.appbase.threads;
* @Author ZhanGSKen@AliYun.Com
* @Date 2025/02/14 03:46:44
*/
+import android.app.AlarmManager;
+import android.app.PendingIntent;
import android.content.Context;
+import android.content.Intent;
import cc.winboll.studio.appbase.handlers.MainServiceHandler;
+import cc.winboll.studio.appbase.widgets.TimeWidget;
import cc.winboll.studio.libappbase.LogUtils;
-import com.hjq.toast.ToastUtils;
import java.lang.ref.WeakReference;
public class MainServiceThread extends Thread {
@@ -38,11 +41,20 @@ public class MainServiceThread extends Thread {
@Override
public void run() {
LogUtils.d(TAG, "run()");
+
while (!isExist()) {
//ToastUtils.show("run()");
//LogUtils.d(TAG, "run()");
+ Intent intent = new Intent(mContext, TimeWidget.class);
+ intent.setAction(TimeWidget.UPDATE_TIME_ACTION);
+ //PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
+ mContext.sendBroadcast(intent);
+ //AlarmManager alarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
+ //long interval = 1000;
+ //alarmManager.setRepeating(AlarmManager.RTC, System.currentTimeMillis(), interval, pendingIntent);
+
try {
- Thread.sleep(3000);
+ Thread.sleep(1000);
} catch (InterruptedException e) {
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
}
diff --git a/appbase/src/main/java/cc/winboll/studio/appbase/widgets/TimeWidget.java b/appbase/src/main/java/cc/winboll/studio/appbase/widgets/TimeWidget.java
new file mode 100644
index 0000000..e0e5f05
--- /dev/null
+++ b/appbase/src/main/java/cc/winboll/studio/appbase/widgets/TimeWidget.java
@@ -0,0 +1,85 @@
+package cc.winboll.studio.appbase.widgets;
+
+/**
+ * @Author ZhanGSKen@AliYun.Com
+ * @Date 2025/02/15 14:41:25
+ * @Describe TimeWidget
+ */
+import android.app.AlarmManager;
+import android.app.PendingIntent;
+import android.appwidget.AppWidgetManager;
+import android.appwidget.AppWidgetProvider;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.widget.RemoteViews;
+import cc.winboll.studio.appbase.R;
+import cc.winboll.studio.libappbase.LogUtils;
+import com.hjq.toast.ToastUtils;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.ArrayList;
+
+public class TimeWidget extends AppWidgetProvider {
+
+ public static final String TAG = "TimeWidget";
+
+ public static final String UPDATE_TIME_ACTION = "com.example.android.UPDATE_TIME";
+
+ volatile static ArrayList _Message;
+
+ @Override
+ public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
+ for (int appWidgetId : appWidgetIds) {
+ updateAppWidget(context, appWidgetManager, appWidgetId);
+ }
+ }
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ super.onReceive(context, intent);
+ if (intent.getAction().equals(UPDATE_TIME_ACTION)) {
+ AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
+ int[] appWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(context, TimeWidget.class));
+ for (int appWidgetId : appWidgetIds) {
+ updateAppWidget(context, appWidgetManager, appWidgetId);
+ }
+ }
+ }
+
+ private void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) {
+ if (_Message == null) {
+ _Message = new ArrayList();
+ }
+ LogUtils.d(TAG, "updateAppWidget(...)");
+
+ StringBuilder sbLine = new StringBuilder();
+// for (int appWidgetId : appWidgetIds) {
+// RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
+//
+
+// appWidgetManager.updateAppWidget(appWidgetId, views);
+// }
+
+ RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
+ //设置按钮点击事件
+ Intent intent = new Intent(context, WidgetButtonClickListener.class);
+ PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
+ views.setOnClickPendingIntent(R.id.widget_button, pendingIntent);
+
+ // 获取当前时间并设置到TextView
+ SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
+ String currentTime = sdf.format(new Date());
+ sbLine.append("[");
+ sbLine.append(currentTime);
+ sbLine.append("]");
+ _Message.add(0, sbLine.toString());
+ while(_Message.size() > 6) { // 控制显示在6行
+ _Message.remove(_Message.size() - 1);
+ }
+ String message = String.join("\n", _Message);
+ views.setTextViewText(R.id.timeTextView, message);
+ appWidgetManager.updateAppWidget(appWidgetId, views);
+ }
+}
+
diff --git a/appbase/src/main/java/cc/winboll/studio/appbase/widgets/WidgetButtonClickListener.java b/appbase/src/main/java/cc/winboll/studio/appbase/widgets/WidgetButtonClickListener.java
new file mode 100644
index 0000000..b8d42ad
--- /dev/null
+++ b/appbase/src/main/java/cc/winboll/studio/appbase/widgets/WidgetButtonClickListener.java
@@ -0,0 +1,34 @@
+package cc.winboll.studio.appbase.widgets;
+
+/**
+ * @Author ZhanGSKen@AliYun.Com
+ * @Date 2025/02/15 17:20:46
+ * @Describe WidgetButtonClickListener
+ */
+import android.appwidget.AppWidgetManager;
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.widget.RemoteViews;
+import android.widget.Toast;
+import cc.winboll.studio.appbase.R;
+
+public class WidgetButtonClickListener extends BroadcastReceiver {
+
+ public static final String TAG = "WidgetButtonClickListener";
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
+ int[] appWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(context, TimeWidget.class));
+
+ for (int appWidgetId : appWidgetIds) {
+ RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
+ views.setTextViewText(R.id.timeTextView, "文本已更新");
+ appWidgetManager.updateAppWidget(appWidgetId, views);
+ }
+
+ Toast.makeText(context, "按钮被点击", Toast.LENGTH_SHORT).show();
+ }
+}
+
diff --git a/appbase/src/main/res/layout/widget_layout.xml b/appbase/src/main/res/layout/widget_layout.xml
new file mode 100644
index 0000000..1eb4a65
--- /dev/null
+++ b/appbase/src/main/res/layout/widget_layout.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/appbase/src/main/res/xml/appwidget_provider_info.xml b/appbase/src/main/res/xml/appwidget_provider_info.xml
new file mode 100644
index 0000000..f9f81b9
--- /dev/null
+++ b/appbase/src/main/res/xml/appwidget_provider_info.xml
@@ -0,0 +1,7 @@
+
+
+
diff --git a/libappbase/build.properties b/libappbase/build.properties
index 30ec021..7a9c036 100644
--- a/libappbase/build.properties
+++ b/libappbase/build.properties
@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
-#Sat Feb 15 04:45:53 GMT 2025
+#Sat Feb 15 11:51:34 GMT 2025
stageCount=2
libraryProject=libappbase
baseVersion=1.5
publishVersion=1.5.1
-buildCount=97
+buildCount=123
baseBetaVersion=1.5.2
diff --git a/libappbase/src/main/java/cc/winboll/studio/libappbase/SOS.java b/libappbase/src/main/java/cc/winboll/studio/libappbase/SOS.java
index 591233e..b17b9b2 100644
--- a/libappbase/src/main/java/cc/winboll/studio/libappbase/SOS.java
+++ b/libappbase/src/main/java/cc/winboll/studio/libappbase/SOS.java
@@ -7,7 +7,6 @@ package cc.winboll.studio.libappbase;
*/
import android.content.Context;
import android.content.Intent;
-import com.hjq.toast.ToastUtils;
public class SOS {
diff --git a/libappbase/src/main/java/cc/winboll/studio/libappbase/receiver/WinBollReceiver.java b/libappbase/src/main/java/cc/winboll/studio/libappbase/receiver/WinBollReceiver.java
index cd69fa9..c3c49c4 100644
--- a/libappbase/src/main/java/cc/winboll/studio/libappbase/receiver/WinBollReceiver.java
+++ b/libappbase/src/main/java/cc/winboll/studio/libappbase/receiver/WinBollReceiver.java
@@ -1,6 +1,7 @@
package cc.winboll.studio.libappbase.receiver;
import android.content.BroadcastReceiver;
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import cc.winboll.studio.libappbase.LogUtils;
@@ -12,19 +13,38 @@ import cc.winboll.studio.libappbase.WinBoll;
* @Describe WinBollReceiver
*/
public class WinBollReceiver extends BroadcastReceiver {
-
+
public static final String TAG = "WinBollReceiver";
-
-
+
+
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
- if(action.equals(WinBoll.ACTION_SOS)) {
+ if (action.equals(WinBoll.ACTION_SOS)) {
LogUtils.d(TAG, String.format("context.getPackageName() %s", context.getPackageName()));
LogUtils.d(TAG, String.format("action %s", action));
+ String sos = intent.getStringExtra("sos");
+ LogUtils.d(TAG, String.format("sos %s", sos));
+ if (sos != null && sos.equals("SOS")) {
+ String sosCalssType = intent.getStringExtra("sosCalssType");
+ LogUtils.d(TAG, String.format("sosCalssType %s", sosCalssType));
+ if (sosCalssType != null && sosCalssType.equals("Service")) {
+ String sosPackage = intent.getStringExtra("sosPackage");
+ LogUtils.d(TAG, String.format("sosPackage %s", sosPackage));
+
+ String sosClassName = intent.getStringExtra("sosClassName");
+ LogUtils.d(TAG, String.format("sosClassName %s", sosClassName));
+
+ Intent intentService = new Intent();
+ intentService.setComponent(new ComponentName(sosPackage, sosClassName));
+ context.startService(intentService);
+ LogUtils.d(TAG, String.format("context.startService(intentService);"));
+ }
+ }
+
} else {
LogUtils.d(TAG, String.format("action %s", action));
}
}
-
+
}