基本救援设施铺设完成
This commit is contained in:
@@ -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
|
||||
|
@@ -40,7 +40,18 @@
|
||||
</intent-filter>
|
||||
|
||||
</receiver>
|
||||
|
||||
|
||||
<receiver android:name=".widgets.TimeWidget"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
|
||||
<action android:name="com.example.android.UPDATE_TIME" />
|
||||
</intent-filter>
|
||||
<meta-data
|
||||
android:name="android.appwidget.provider"
|
||||
android:resource="@xml/appwidget_provider_info" />
|
||||
</receiver>
|
||||
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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");
|
||||
}
|
||||
|
@@ -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();
|
||||
}
|
||||
|
||||
|
@@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -0,0 +1,83 @@
|
||||
package cc.winboll.studio.libappbase.widgets;
|
||||
/**
|
||||
* @Author ZhanGSKen@AliYun.Com
|
||||
* @Date 2025/02/15 14:41:25
|
||||
* @Describe TimeWidget
|
||||
*/
|
||||
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.libappbase.LogUtils;
|
||||
import cc.winboll.studio.libappbase.R;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
|
||||
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<String> _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)) {
|
||||
|
||||
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, sosAppName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId, String sosAppName) {
|
||||
|
||||
LogUtils.d(TAG, "updateAppWidget(...)");
|
||||
|
||||
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<String>();
|
||||
}
|
||||
// 获取当前时间并设置到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("] Power to ");
|
||||
sbLine.append(sosAppName);
|
||||
_Message.add(0, sbLine.toString());
|
||||
while (_Message.size() > 6) { // 控制显示在6行
|
||||
_Message.remove(_Message.size() - 1);
|
||||
}
|
||||
if (_Message != null) {
|
||||
String message = String.join("\n", _Message);
|
||||
views.setTextViewText(R.id.timeTextView, message);
|
||||
}
|
||||
appWidgetManager.updateAppWidget(appWidgetId, views);
|
||||
}
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,33 @@
|
||||
package cc.winboll.studio.libappbase.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.libappbase.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();
|
||||
}
|
||||
}
|
30
libappbase/src/main/res/layout/widget_layout.xml
Normal file
30
libappbase/src/main/res/layout/widget_layout.xml
Normal file
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:background="#FFFFFFFF">
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="right">
|
||||
|
||||
<Button
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Button"
|
||||
android:id="@+id/widget_button"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:id="@+id/timeTextView"
|
||||
android:layout_weight="1.0"/>
|
||||
|
||||
</LinearLayout>
|
7
libappbase/src/main/res/xml/appwidget_provider_info.xml
Normal file
7
libappbase/src/main/res/xml/appwidget_provider_info.xml
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:minWidth="200dp"
|
||||
android:minHeight="100dp"
|
||||
android:updatePeriodMillis="1000"
|
||||
android:initialLayout="@layout/widget_layout">
|
||||
</appwidget-provider>
|
Reference in New Issue
Block a user