基本救援设施铺设完成
This commit is contained in:
		@@ -1,8 +1,8 @@
 | 
				
			|||||||
#Created by .winboll/winboll_app_build.gradle
 | 
					#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
 | 
					stageCount=2
 | 
				
			||||||
libraryProject=libappbase
 | 
					libraryProject=libappbase
 | 
				
			||||||
baseVersion=1.5
 | 
					baseVersion=1.5
 | 
				
			||||||
publishVersion=1.5.1
 | 
					publishVersion=1.5.1
 | 
				
			||||||
buildCount=123
 | 
					buildCount=147
 | 
				
			||||||
baseBetaVersion=1.5.2
 | 
					baseBetaVersion=1.5.2
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -60,30 +60,13 @@
 | 
				
			|||||||
            </intent-filter>
 | 
					            </intent-filter>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        </receiver>
 | 
					        </receiver>
 | 
				
			||||||
        <receiver android:name=".widgets.TimeWidget">
 | 
					 | 
				
			||||||
            <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>
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        <receiver android:name=".TimeWidget">
 | 
					 | 
				
			||||||
            <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>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <meta-data
 | 
					        <meta-data
 | 
				
			||||||
            android:name="android.max_aspect"
 | 
					            android:name="android.max_aspect"
 | 
				
			||||||
            android:value="4.0"/>
 | 
					            android:value="4.0"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <service android:name="cc.winboll.studio.appbase.services.TestService"
 | 
				
			||||||
 | 
					            android:exported="true"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    </application>
 | 
					    </application>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,11 +9,13 @@ import androidx.appcompat.app.AppCompatActivity;
 | 
				
			|||||||
import androidx.appcompat.widget.Toolbar;
 | 
					import androidx.appcompat.widget.Toolbar;
 | 
				
			||||||
import cc.winboll.studio.appbase.R;
 | 
					import cc.winboll.studio.appbase.R;
 | 
				
			||||||
import cc.winboll.studio.appbase.services.MainService;
 | 
					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.GlobalApplication;
 | 
				
			||||||
import cc.winboll.studio.libappbase.LogUtils;
 | 
					import cc.winboll.studio.libappbase.LogUtils;
 | 
				
			||||||
import cc.winboll.studio.libappbase.LogView;
 | 
					import cc.winboll.studio.libappbase.LogView;
 | 
				
			||||||
import cc.winboll.studio.libappbase.SOS;
 | 
					import cc.winboll.studio.libappbase.SOS;
 | 
				
			||||||
import cc.winboll.studio.libappbase.SimpleOperateSignalCenterService;
 | 
					import cc.winboll.studio.libappbase.SimpleOperateSignalCenterService;
 | 
				
			||||||
 | 
					import cc.winboll.studio.libappbase.widgets.TimeWidget;
 | 
				
			||||||
import com.hjq.toast.ToastUtils;
 | 
					import com.hjq.toast.ToastUtils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class MainActivity extends AppCompatActivity {
 | 
					public class MainActivity extends AppCompatActivity {
 | 
				
			||||||
@@ -77,7 +79,15 @@ public class MainActivity extends AppCompatActivity {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void onSOS(View view) {
 | 
					    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() {
 | 
					//    public void sos() {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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()");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -4,13 +4,11 @@ package cc.winboll.studio.appbase.threads;
 | 
				
			|||||||
 * @Author ZhanGSKen@AliYun.Com
 | 
					 * @Author ZhanGSKen@AliYun.Com
 | 
				
			||||||
 * @Date 2025/02/14 03:46:44
 | 
					 * @Date 2025/02/14 03:46:44
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
import android.app.AlarmManager;
 | 
					 | 
				
			||||||
import android.app.PendingIntent;
 | 
					 | 
				
			||||||
import android.content.Context;
 | 
					import android.content.Context;
 | 
				
			||||||
import android.content.Intent;
 | 
					import android.content.Intent;
 | 
				
			||||||
import cc.winboll.studio.appbase.handlers.MainServiceHandler;
 | 
					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.LogUtils;
 | 
				
			||||||
 | 
					import cc.winboll.studio.libappbase.widgets.TimeWidget;
 | 
				
			||||||
import java.lang.ref.WeakReference;
 | 
					import java.lang.ref.WeakReference;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class MainServiceThread extends Thread {
 | 
					public class MainServiceThread extends Thread {
 | 
				
			||||||
@@ -44,14 +42,11 @@ public class MainServiceThread extends Thread {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        while (!isExist()) {
 | 
					        while (!isExist()) {
 | 
				
			||||||
            //ToastUtils.show("run()");
 | 
					            //ToastUtils.show("run()");
 | 
				
			||||||
            //LogUtils.d(TAG, "run()");
 | 
					            LogUtils.d(TAG, "run()");
 | 
				
			||||||
            Intent intent = new Intent(mContext, TimeWidget.class);
 | 
					            Intent intentTimeWidget = new Intent(mContext, TimeWidget.class);
 | 
				
			||||||
            intent.setAction(TimeWidget.UPDATE_TIME_ACTION);
 | 
					            intentTimeWidget.setAction(TimeWidget.UPDATE_TIME_ACTION);
 | 
				
			||||||
            //PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
 | 
					            intentTimeWidget.putExtra("appName", "TestName");
 | 
				
			||||||
            mContext.sendBroadcast(intent);
 | 
					            mContext.sendBroadcast(intentTimeWidget);
 | 
				
			||||||
            //AlarmManager alarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
 | 
					 | 
				
			||||||
            //long interval = 1000;
 | 
					 | 
				
			||||||
            //alarmManager.setRepeating(AlarmManager.RTC, System.currentTimeMillis(), interval, pendingIntent);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            try {
 | 
					            try {
 | 
				
			||||||
                Thread.sleep(1000);
 | 
					                Thread.sleep(1000);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,32 +0,0 @@
 | 
				
			|||||||
<?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:text="Text"
 | 
					 | 
				
			||||||
		android:id="@+id/timeTextView"
 | 
					 | 
				
			||||||
		android:layout_weight="1.0"/>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
</LinearLayout>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@@ -1,8 +1,8 @@
 | 
				
			|||||||
#Created by .winboll/winboll_app_build.gradle
 | 
					#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
 | 
					stageCount=2
 | 
				
			||||||
libraryProject=libappbase
 | 
					libraryProject=libappbase
 | 
				
			||||||
baseVersion=1.5
 | 
					baseVersion=1.5
 | 
				
			||||||
publishVersion=1.5.1
 | 
					publishVersion=1.5.1
 | 
				
			||||||
buildCount=123
 | 
					buildCount=147
 | 
				
			||||||
baseBetaVersion=1.5.2
 | 
					baseBetaVersion=1.5.2
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -41,6 +41,17 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        </receiver>
 | 
					        </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>
 | 
					    </application>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
</manifest>
 | 
					</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 class SOS {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static final String TAG = "SOS";
 | 
					    public static final String TAG = "SOS";
 | 
				
			||||||
 | 
					    public static final String ACTION_SOS = "cc.winboll.studio.libappbase.WinBoll.ACTION_SOS";
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    public static void sosToWinBoll(Context context) {
 | 
					    public static void sosWinBollService(Context context, Class<?> clazz) {
 | 
				
			||||||
        Intent intent = new Intent(WinBoll.ACTION_SOS);
 | 
					        Intent intent = new Intent(ACTION_SOS);
 | 
				
			||||||
 | 
					        intent.putExtra("sos", "SOS");
 | 
				
			||||||
        intent.putExtra("sosPackage", context.getPackageName());
 | 
					        intent.putExtra("sosPackage", context.getPackageName());
 | 
				
			||||||
        intent.putExtra("message", "SOS");
 | 
					        intent.putExtra("sosCalssType", "Service");
 | 
				
			||||||
 | 
					        intent.putExtra("sosClassName", clazz.getName());
 | 
				
			||||||
        String szToPackage = "";
 | 
					        String szToPackage = "";
 | 
				
			||||||
        if (GlobalApplication.isDebuging()) {
 | 
					        if (GlobalApplication.isDebuging()) {
 | 
				
			||||||
            szToPackage = "cc.winboll.studio.appbase.beta";
 | 
					            szToPackage = "cc.winboll.studio.appbase.beta";
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -93,6 +93,10 @@ public class SimpleOperateSignalCenterService extends Service {
 | 
				
			|||||||
        super.onCreate();
 | 
					        super.onCreate();
 | 
				
			||||||
        LogUtils.d(TAG, "onCreate");
 | 
					        LogUtils.d(TAG, "onCreate");
 | 
				
			||||||
        mSimpleOperateSignalCenterServiceBean = SimpleOperateSignalCenterServiceBean.loadBean(this, SimpleOperateSignalCenterServiceBean.class);
 | 
					        mSimpleOperateSignalCenterServiceBean = SimpleOperateSignalCenterServiceBean.loadBean(this, SimpleOperateSignalCenterServiceBean.class);
 | 
				
			||||||
 | 
					        if(mSimpleOperateSignalCenterServiceBean == null) {
 | 
				
			||||||
 | 
					            mSimpleOperateSignalCenterServiceBean = new SimpleOperateSignalCenterServiceBean();
 | 
				
			||||||
 | 
					            SimpleOperateSignalCenterServiceBean.saveBean(this, mSimpleOperateSignalCenterServiceBean);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        runMainThread();
 | 
					        runMainThread();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,6 +6,8 @@ import android.content.Context;
 | 
				
			|||||||
import android.content.Intent;
 | 
					import android.content.Intent;
 | 
				
			||||||
import cc.winboll.studio.libappbase.LogUtils;
 | 
					import cc.winboll.studio.libappbase.LogUtils;
 | 
				
			||||||
import cc.winboll.studio.libappbase.WinBoll;
 | 
					import cc.winboll.studio.libappbase.WinBoll;
 | 
				
			||||||
 | 
					import cc.winboll.studio.libappbase.AppUtils;
 | 
				
			||||||
 | 
					import cc.winboll.studio.libappbase.widgets.TimeWidget;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @Author ZhanGSKen@AliYun.Com
 | 
					 * @Author ZhanGSKen@AliYun.Com
 | 
				
			||||||
@@ -39,6 +41,14 @@ public class WinBollReceiver extends BroadcastReceiver {
 | 
				
			|||||||
                    intentService.setComponent(new ComponentName(sosPackage, sosClassName));
 | 
					                    intentService.setComponent(new ComponentName(sosPackage, sosClassName));
 | 
				
			||||||
                    context.startService(intentService);
 | 
					                    context.startService(intentService);
 | 
				
			||||||
                    LogUtils.d(TAG, String.format("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);
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
                }  
 | 
					                }  
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,11 +1,9 @@
 | 
				
			|||||||
package cc.winboll.studio.appbase.widgets;
 | 
					package cc.winboll.studio.libappbase.widgets;
 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @Author ZhanGSKen@AliYun.Com
 | 
					 * @Author ZhanGSKen@AliYun.Com
 | 
				
			||||||
 * @Date 2025/02/15 14:41:25
 | 
					 * @Date 2025/02/15 14:41:25
 | 
				
			||||||
 * @Describe TimeWidget
 | 
					 * @Describe TimeWidget
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
import android.app.AlarmManager;
 | 
					 | 
				
			||||||
import android.app.PendingIntent;
 | 
					import android.app.PendingIntent;
 | 
				
			||||||
import android.appwidget.AppWidgetManager;
 | 
					import android.appwidget.AppWidgetManager;
 | 
				
			||||||
import android.appwidget.AppWidgetProvider;
 | 
					import android.appwidget.AppWidgetProvider;
 | 
				
			||||||
@@ -13,12 +11,11 @@ import android.content.ComponentName;
 | 
				
			|||||||
import android.content.Context;
 | 
					import android.content.Context;
 | 
				
			||||||
import android.content.Intent;
 | 
					import android.content.Intent;
 | 
				
			||||||
import android.widget.RemoteViews;
 | 
					import android.widget.RemoteViews;
 | 
				
			||||||
import cc.winboll.studio.appbase.R;
 | 
					 | 
				
			||||||
import cc.winboll.studio.libappbase.LogUtils;
 | 
					import cc.winboll.studio.libappbase.LogUtils;
 | 
				
			||||||
import com.hjq.toast.ToastUtils;
 | 
					import cc.winboll.studio.libappbase.R;
 | 
				
			||||||
import java.text.SimpleDateFormat;
 | 
					import java.text.SimpleDateFormat;
 | 
				
			||||||
import java.util.Date;
 | 
					 | 
				
			||||||
import java.util.ArrayList;
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.Date;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class TimeWidget extends AppWidgetProvider {
 | 
					public class TimeWidget extends AppWidgetProvider {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -31,7 +28,7 @@ public class TimeWidget extends AppWidgetProvider {
 | 
				
			|||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
 | 
					    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
 | 
				
			||||||
        for (int appWidgetId : 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) {
 | 
					    public void onReceive(Context context, Intent intent) {
 | 
				
			||||||
        super.onReceive(context, intent);
 | 
					        super.onReceive(context, intent);
 | 
				
			||||||
        if (intent.getAction().equals(UPDATE_TIME_ACTION)) {
 | 
					        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);
 | 
					            AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
 | 
				
			||||||
            int[] appWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(context, TimeWidget.class));
 | 
					            int[] appWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(context, TimeWidget.class));
 | 
				
			||||||
            for (int appWidgetId : appWidgetIds) {
 | 
					            for (int appWidgetId : appWidgetIds) {
 | 
				
			||||||
                updateAppWidget(context, appWidgetManager, appWidgetId);
 | 
					                updateAppWidget(context, appWidgetManager, appWidgetId, sosAppName);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) {
 | 
					    private void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId, String sosAppName) {
 | 
				
			||||||
        if (_Message == null) {
 | 
					
 | 
				
			||||||
            _Message = new ArrayList<String>();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        LogUtils.d(TAG, "updateAppWidget(...)");
 | 
					        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);
 | 
					        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
 | 
				
			||||||
        //设置按钮点击事件
 | 
					        //设置按钮点击事件
 | 
				
			||||||
        Intent intent = new Intent(context, WidgetButtonClickListener.class);
 | 
					        Intent intent = new Intent(context, WidgetButtonClickListener.class);
 | 
				
			||||||
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
 | 
					        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
 | 
				
			||||||
        views.setOnClickPendingIntent(R.id.widget_button, pendingIntent);
 | 
					        views.setOnClickPendingIntent(R.id.widget_button, pendingIntent);
 | 
				
			||||||
 | 
					        if (_Message == null) {
 | 
				
			||||||
 | 
					            _Message = new ArrayList<String>();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        // 获取当前时间并设置到TextView
 | 
					        // 获取当前时间并设置到TextView
 | 
				
			||||||
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
 | 
					        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
 | 
				
			||||||
        String currentTime = sdf.format(new Date());
 | 
					        String currentTime = sdf.format(new Date());
 | 
				
			||||||
 | 
					        StringBuilder sbLine = new StringBuilder();
 | 
				
			||||||
        sbLine.append("[");
 | 
					        sbLine.append("[");
 | 
				
			||||||
        sbLine.append(currentTime);
 | 
					        sbLine.append(currentTime);
 | 
				
			||||||
        sbLine.append("]");
 | 
					        sbLine.append("] Power to ");
 | 
				
			||||||
 | 
					        sbLine.append(sosAppName);
 | 
				
			||||||
        _Message.add(0, sbLine.toString());
 | 
					        _Message.add(0, sbLine.toString());
 | 
				
			||||||
        while (_Message.size() > 6) { // 控制显示在6行
 | 
					        while (_Message.size() > 6) { // 控制显示在6行
 | 
				
			||||||
            _Message.remove(_Message.size() - 1);
 | 
					            _Message.remove(_Message.size() - 1);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if (_Message != null) {
 | 
				
			||||||
            String message = String.join("\n", _Message);
 | 
					            String message = String.join("\n", _Message);
 | 
				
			||||||
            views.setTextViewText(R.id.timeTextView, message);
 | 
					            views.setTextViewText(R.id.timeTextView, message);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        appWidgetManager.updateAppWidget(appWidgetId, views);
 | 
					        appWidgetManager.updateAppWidget(appWidgetId, views);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
package cc.winboll.studio.appbase.widgets;
 | 
					package cc.winboll.studio.libappbase.widgets;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @Author ZhanGSKen@AliYun.Com
 | 
					 * @Author ZhanGSKen@AliYun.Com
 | 
				
			||||||
@@ -12,7 +12,7 @@ import android.content.Context;
 | 
				
			|||||||
import android.content.Intent;
 | 
					import android.content.Intent;
 | 
				
			||||||
import android.widget.RemoteViews;
 | 
					import android.widget.RemoteViews;
 | 
				
			||||||
import android.widget.Toast;
 | 
					import android.widget.Toast;
 | 
				
			||||||
import cc.winboll.studio.appbase.R;
 | 
					import cc.winboll.studio.libappbase.R;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class WidgetButtonClickListener extends BroadcastReceiver {
 | 
					public class WidgetButtonClickListener extends BroadcastReceiver {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -31,4 +31,3 @@ public class WidgetButtonClickListener extends BroadcastReceiver {
 | 
				
			|||||||
        Toast.makeText(context, "按钮被点击", Toast.LENGTH_SHORT).show();
 | 
					        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>
 | 
				
			||||||
		Reference in New Issue
	
	Block a user