diff --git a/appbase/build.properties b/appbase/build.properties
index 7a9c036..46e9d50 100644
--- a/appbase/build.properties
+++ b/appbase/build.properties
@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
-#Sat Feb 15 11:51:34 GMT 2025
+#Sat Feb 15 13:33:01 GMT 2025
stageCount=2
libraryProject=libappbase
baseVersion=1.5
publishVersion=1.5.1
-buildCount=123
+buildCount=147
baseBetaVersion=1.5.2
diff --git a/appbase/src/main/AndroidManifest.xml b/appbase/src/main/AndroidManifest.xml
index 2c67860..cac5b8b 100644
--- a/appbase/src/main/AndroidManifest.xml
+++ b/appbase/src/main/AndroidManifest.xml
@@ -60,30 +60,13 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
diff --git a/appbase/src/main/java/cc/winboll/studio/appbase/MainActivity.java b/appbase/src/main/java/cc/winboll/studio/appbase/MainActivity.java
index 8f04157..a428b11 100644
--- a/appbase/src/main/java/cc/winboll/studio/appbase/MainActivity.java
+++ b/appbase/src/main/java/cc/winboll/studio/appbase/MainActivity.java
@@ -9,11 +9,13 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import cc.winboll.studio.appbase.R;
import cc.winboll.studio.appbase.services.MainService;
+import cc.winboll.studio.appbase.services.TestService;
import cc.winboll.studio.libappbase.GlobalApplication;
import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libappbase.LogView;
import cc.winboll.studio.libappbase.SOS;
import cc.winboll.studio.libappbase.SimpleOperateSignalCenterService;
+import cc.winboll.studio.libappbase.widgets.TimeWidget;
import com.hjq.toast.ToastUtils;
public class MainActivity extends AppCompatActivity {
@@ -77,7 +79,15 @@ public class MainActivity extends AppCompatActivity {
}
public void onSOS(View view) {
- SOS.sosToWinBoll(this);
+ Intent intent = new Intent(this, TestService.class);
+ stopService(intent);
+ SOS.sosWinBollService(this, TestService.class);
+
+// Intent intentTimeWidget = new Intent(this, TimeWidget.class);
+// intentTimeWidget.setAction(TimeWidget.UPDATE_TIME_ACTION);
+// intentTimeWidget.putExtra("appName", "TestName");
+// sendBroadcast(intentTimeWidget);
+//
}
// public void sos() {
@@ -105,6 +115,6 @@ public class MainActivity extends AppCompatActivity {
// sendBroadcast(intent);
// LogUtils.d(TAG, "onSOS2");
// }
-
-
+
+
}
diff --git a/appbase/src/main/java/cc/winboll/studio/appbase/services/TestService.java b/appbase/src/main/java/cc/winboll/studio/appbase/services/TestService.java
new file mode 100644
index 0000000..d01d4c3
--- /dev/null
+++ b/appbase/src/main/java/cc/winboll/studio/appbase/services/TestService.java
@@ -0,0 +1,42 @@
+package cc.winboll.studio.appbase.services;
+
+import android.app.Service;
+import android.content.Intent;
+import android.os.IBinder;
+import cc.winboll.studio.libappbase.LogUtils;
+
+/**
+ * @Author ZhanGSKen@AliYun.Com
+ * @Date 2025/02/15 20:48:36
+ * @Describe TestService
+ */
+public class TestService extends Service {
+
+ public static final String TAG = "TestService";
+
+ @Override
+ public IBinder onBind(Intent intent) {
+
+ return null;
+ }
+
+ @Override
+ public void onCreate() {
+ super.onCreate();
+ LogUtils.d(TAG, "onCreate()");
+ }
+
+ @Override
+ public int onStartCommand(Intent intent, int flags, int startId) {
+ LogUtils.d(TAG, "onStartCommand(...)");
+ return super.onStartCommand(intent, flags, startId);
+ }
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ LogUtils.d(TAG, "onDestroy()");
+ }
+
+
+}
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 c8c9066..5cd1677 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,13 +4,11 @@ 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 cc.winboll.studio.libappbase.widgets.TimeWidget;
import java.lang.ref.WeakReference;
public class MainServiceThread extends Thread {
@@ -44,15 +42,12 @@ public class MainServiceThread extends Thread {
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);
-
+ LogUtils.d(TAG, "run()");
+ Intent intentTimeWidget = new Intent(mContext, TimeWidget.class);
+ intentTimeWidget.setAction(TimeWidget.UPDATE_TIME_ACTION);
+ intentTimeWidget.putExtra("appName", "TestName");
+ mContext.sendBroadcast(intentTimeWidget);
+
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
diff --git a/appbase/src/main/res/layout/widget_layout.xml b/appbase/src/main/res/layout/widget_layout.xml
deleted file mode 100644
index 1eb4a65..0000000
--- a/appbase/src/main/res/layout/widget_layout.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/libappbase/build.properties b/libappbase/build.properties
index 7a9c036..46e9d50 100644
--- a/libappbase/build.properties
+++ b/libappbase/build.properties
@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
-#Sat Feb 15 11:51:34 GMT 2025
+#Sat Feb 15 13:33:01 GMT 2025
stageCount=2
libraryProject=libappbase
baseVersion=1.5
publishVersion=1.5.1
-buildCount=123
+buildCount=147
baseBetaVersion=1.5.2
diff --git a/libappbase/src/main/AndroidManifest.xml b/libappbase/src/main/AndroidManifest.xml
index 7513464..cb1eb9c 100644
--- a/libappbase/src/main/AndroidManifest.xml
+++ b/libappbase/src/main/AndroidManifest.xml
@@ -40,7 +40,18 @@
-
+
+
+
+
+
+
+
+
+
diff --git a/libappbase/src/main/java/cc/winboll/studio/libappbase/AppUtils.java b/libappbase/src/main/java/cc/winboll/studio/libappbase/AppUtils.java
new file mode 100644
index 0000000..861d511
--- /dev/null
+++ b/libappbase/src/main/java/cc/winboll/studio/libappbase/AppUtils.java
@@ -0,0 +1,26 @@
+package cc.winboll.studio.libappbase;
+
+/**
+ * @Author ZhanGSKen@AliYun.Com
+ * @Date 2025/02/15 20:05:03
+ * @Describe AppUtils
+ */
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
+
+public class AppUtils {
+ public static final String TAG = "AppUtils";
+ public static String getAppNameByPackageName(Context context, String packageName) {
+ PackageManager packageManager = context.getPackageManager();
+ try {
+ ApplicationInfo applicationInfo = packageManager.getApplicationInfo(packageName, 0);
+ return (String) packageManager.getApplicationLabel(applicationInfo);
+ } catch (NameNotFoundException e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+}
+
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 b17b9b2..9c6f967 100644
--- a/libappbase/src/main/java/cc/winboll/studio/libappbase/SOS.java
+++ b/libappbase/src/main/java/cc/winboll/studio/libappbase/SOS.java
@@ -11,11 +11,14 @@ import android.content.Intent;
public class SOS {
public static final String TAG = "SOS";
-
- public static void sosToWinBoll(Context context) {
- Intent intent = new Intent(WinBoll.ACTION_SOS);
+ public static final String ACTION_SOS = "cc.winboll.studio.libappbase.WinBoll.ACTION_SOS";
+
+ public static void sosWinBollService(Context context, Class> clazz) {
+ Intent intent = new Intent(ACTION_SOS);
+ intent.putExtra("sos", "SOS");
intent.putExtra("sosPackage", context.getPackageName());
- intent.putExtra("message", "SOS");
+ intent.putExtra("sosCalssType", "Service");
+ intent.putExtra("sosClassName", clazz.getName());
String szToPackage = "";
if (GlobalApplication.isDebuging()) {
szToPackage = "cc.winboll.studio.appbase.beta";
@@ -24,7 +27,7 @@ public class SOS {
}
intent.setPackage(szToPackage);
context.sendBroadcast(intent);
-
+
LogUtils.d(TAG, String.format("SOS Send To WinBoll. (szToPackage : %s)", szToPackage));
//ToastUtils.show("SOS Send To WinBoll");
}
diff --git a/libappbase/src/main/java/cc/winboll/studio/libappbase/SimpleOperateSignalCenterService.java b/libappbase/src/main/java/cc/winboll/studio/libappbase/SimpleOperateSignalCenterService.java
index ead9e20..332d1eb 100644
--- a/libappbase/src/main/java/cc/winboll/studio/libappbase/SimpleOperateSignalCenterService.java
+++ b/libappbase/src/main/java/cc/winboll/studio/libappbase/SimpleOperateSignalCenterService.java
@@ -93,6 +93,10 @@ public class SimpleOperateSignalCenterService extends Service {
super.onCreate();
LogUtils.d(TAG, "onCreate");
mSimpleOperateSignalCenterServiceBean = SimpleOperateSignalCenterServiceBean.loadBean(this, SimpleOperateSignalCenterServiceBean.class);
+ if(mSimpleOperateSignalCenterServiceBean == null) {
+ mSimpleOperateSignalCenterServiceBean = new SimpleOperateSignalCenterServiceBean();
+ SimpleOperateSignalCenterServiceBean.saveBean(this, mSimpleOperateSignalCenterServiceBean);
+ }
runMainThread();
}
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 c3c49c4..e3748a6 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
@@ -6,6 +6,8 @@ import android.content.Context;
import android.content.Intent;
import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libappbase.WinBoll;
+import cc.winboll.studio.libappbase.AppUtils;
+import cc.winboll.studio.libappbase.widgets.TimeWidget;
/**
* @Author ZhanGSKen@AliYun.Com
@@ -39,6 +41,14 @@ public class WinBollReceiver extends BroadcastReceiver {
intentService.setComponent(new ComponentName(sosPackage, sosClassName));
context.startService(intentService);
LogUtils.d(TAG, String.format("context.startService(intentService);"));
+
+ String appName = AppUtils.getAppNameByPackageName(context, sosPackage);
+ LogUtils.d(TAG, String.format("appName %s", appName));
+ Intent intentTimeWidget = new Intent(context, TimeWidget.class);
+ intentTimeWidget.setAction(TimeWidget.UPDATE_TIME_ACTION);
+ intentTimeWidget.putExtra("appName", appName);
+ context.sendBroadcast(intentTimeWidget);
+
}
}
diff --git a/appbase/src/main/java/cc/winboll/studio/appbase/widgets/TimeWidget.java b/libappbase/src/main/java/cc/winboll/studio/libappbase/widgets/TimeWidget.java
similarity index 80%
rename from appbase/src/main/java/cc/winboll/studio/appbase/widgets/TimeWidget.java
rename to libappbase/src/main/java/cc/winboll/studio/libappbase/widgets/TimeWidget.java
index e0e5f05..0b56e39 100644
--- a/appbase/src/main/java/cc/winboll/studio/appbase/widgets/TimeWidget.java
+++ b/libappbase/src/main/java/cc/winboll/studio/libappbase/widgets/TimeWidget.java
@@ -1,11 +1,9 @@
-package cc.winboll.studio.appbase.widgets;
-
+package cc.winboll.studio.libappbase.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;
@@ -13,12 +11,11 @@ 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 cc.winboll.studio.libappbase.R;
import java.text.SimpleDateFormat;
-import java.util.Date;
import java.util.ArrayList;
+import java.util.Date;
public class TimeWidget extends AppWidgetProvider {
@@ -31,7 +28,7 @@ public class TimeWidget extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
for (int appWidgetId : appWidgetIds) {
- updateAppWidget(context, appWidgetManager, appWidgetId);
+ updateAppWidget(context, appWidgetManager, appWidgetId, "");
}
}
@@ -39,47 +36,48 @@ public class TimeWidget extends AppWidgetProvider {
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
if (intent.getAction().equals(UPDATE_TIME_ACTION)) {
+
+ String sosAppName = intent.getStringExtra("appName");
+ LogUtils.d(TAG, String.format("sosAppName %s", sosAppName));
+
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
int[] appWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(context, TimeWidget.class));
for (int appWidgetId : appWidgetIds) {
- updateAppWidget(context, appWidgetManager, appWidgetId);
+ updateAppWidget(context, appWidgetManager, appWidgetId, sosAppName);
}
}
}
- private void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) {
- if (_Message == null) {
- _Message = new ArrayList();
- }
+ private void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId, String sosAppName) {
+
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);
-
+ if (_Message == null) {
+ _Message = new ArrayList();
+ }
// 获取当前时间并设置到TextView
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
String currentTime = sdf.format(new Date());
+ StringBuilder sbLine = new StringBuilder();
sbLine.append("[");
sbLine.append(currentTime);
- sbLine.append("]");
+ sbLine.append("] Power to ");
+ sbLine.append(sosAppName);
_Message.add(0, sbLine.toString());
- while(_Message.size() > 6) { // 控制显示在6行
+ while (_Message.size() > 6) { // 控制显示在6行
_Message.remove(_Message.size() - 1);
}
- String message = String.join("\n", _Message);
- views.setTextViewText(R.id.timeTextView, message);
+ if (_Message != null) {
+ 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/libappbase/src/main/java/cc/winboll/studio/libappbase/widgets/WidgetButtonClickListener.java
similarity index 93%
rename from appbase/src/main/java/cc/winboll/studio/appbase/widgets/WidgetButtonClickListener.java
rename to libappbase/src/main/java/cc/winboll/studio/libappbase/widgets/WidgetButtonClickListener.java
index b8d42ad..3dd83df 100644
--- a/appbase/src/main/java/cc/winboll/studio/appbase/widgets/WidgetButtonClickListener.java
+++ b/libappbase/src/main/java/cc/winboll/studio/libappbase/widgets/WidgetButtonClickListener.java
@@ -1,4 +1,4 @@
-package cc.winboll.studio.appbase.widgets;
+package cc.winboll.studio.libappbase.widgets;
/**
* @Author ZhanGSKen@AliYun.Com
@@ -12,10 +12,10 @@ import android.content.Context;
import android.content.Intent;
import android.widget.RemoteViews;
import android.widget.Toast;
-import cc.winboll.studio.appbase.R;
+import cc.winboll.studio.libappbase.R;
public class WidgetButtonClickListener extends BroadcastReceiver {
-
+
public static final String TAG = "WidgetButtonClickListener";
@Override
public void onReceive(Context context, Intent intent) {
@@ -31,4 +31,3 @@ public class WidgetButtonClickListener extends BroadcastReceiver {
Toast.makeText(context, "按钮被点击", Toast.LENGTH_SHORT).show();
}
}
-
diff --git a/libappbase/src/main/res/layout/widget_layout.xml b/libappbase/src/main/res/layout/widget_layout.xml
new file mode 100644
index 0000000..befd01d
--- /dev/null
+++ b/libappbase/src/main/res/layout/widget_layout.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/appbase/src/main/res/xml/appwidget_provider_info.xml b/libappbase/src/main/res/xml/appwidget_provider_info.xml
similarity index 100%
rename from appbase/src/main/res/xml/appwidget_provider_info.xml
rename to libappbase/src/main/res/xml/appwidget_provider_info.xml