diff --git a/timestamp/build.properties b/timestamp/build.properties index cf9ff9e..437546a 100644 --- a/timestamp/build.properties +++ b/timestamp/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Mon May 05 04:37:03 GMT 2025 +#Mon May 05 07:42:42 GMT 2025 stageCount=0 libraryProject= baseVersion=15.0 publishVersion=15.0.0 -buildCount=26 +buildCount=63 baseBetaVersion=15.0.1 diff --git a/timestamp/src/main/java/cc/winboll/studio/timestamp/AssistantService.java b/timestamp/src/main/java/cc/winboll/studio/timestamp/AssistantService.java index 26f5b7c..462a8ac 100644 --- a/timestamp/src/main/java/cc/winboll/studio/timestamp/AssistantService.java +++ b/timestamp/src/main/java/cc/winboll/studio/timestamp/AssistantService.java @@ -13,7 +13,8 @@ import android.content.ServiceConnection; import android.os.IBinder; import cc.winboll.studio.timestamp.AssistantService; import cc.winboll.studio.timestamp.MainService; -import cc.winboll.studio.timestamp.models.AppConfigs; +import cc.winboll.studio.timestamp.models.AppConfigsModel; +import cc.winboll.studio.timestamp.utils.AppConfigsUtil; import cc.winboll.studio.timestamp.utils.ServiceUtil; public class AssistantService extends Service { @@ -48,7 +49,7 @@ public class AssistantService extends Service { public int onStartCommand(Intent intent, int flags, int startId) { //LogUtils.d(TAG, "call onStartCommand(...)"); run(); - AppConfigs appConfigs = AppConfigs.getInstance(AssistantService.this).loadAppConfigs(); + AppConfigsModel appConfigs = AppConfigsUtil.getInstance(AssistantService.this).loadAppConfigs(); return appConfigs.isEnableService() ? Service.START_STICKY: super.onStartCommand(intent, flags, startId); } @@ -70,7 +71,7 @@ public class AssistantService extends Service { // void run() { //LogUtils.d(TAG, "call run()"); - AppConfigs appConfigs = AppConfigs.getInstance(AssistantService.this).loadAppConfigs(); + AppConfigsModel appConfigs = AppConfigsUtil.getInstance(AssistantService.this).loadAppConfigs(); if (appConfigs.isEnableService()) { if (mIsThreadAlive == false) { // 设置运行状态 @@ -103,7 +104,7 @@ public class AssistantService extends Service { @Override public void onServiceDisconnected(ComponentName name) { //LogUtils.d(TAG, "call onServiceDisconnected(...)"); - AppConfigs appConfigs = AppConfigs.getInstance(AssistantService.this).loadAppConfigs(); + AppConfigsModel appConfigs = AppConfigsUtil.getInstance(AssistantService.this).loadAppConfigs(); if (appConfigs.isEnableService()) { wakeupAndBindMain(); } diff --git a/timestamp/src/main/java/cc/winboll/studio/timestamp/MainActivity.java b/timestamp/src/main/java/cc/winboll/studio/timestamp/MainActivity.java index d6fb53f..bbfc70e 100644 --- a/timestamp/src/main/java/cc/winboll/studio/timestamp/MainActivity.java +++ b/timestamp/src/main/java/cc/winboll/studio/timestamp/MainActivity.java @@ -2,12 +2,12 @@ package cc.winboll.studio.timestamp; import android.os.Bundle; import android.view.View; +import android.widget.Switch; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; import cc.winboll.studio.libappbase.LogView; +import cc.winboll.studio.timestamp.utils.AppConfigsUtil; import com.hjq.toast.ToastUtils; -import android.widget.Switch; -import cc.winboll.studio.timestamp.models.AppConfigs; public class MainActivity extends AppCompatActivity { @@ -23,7 +23,7 @@ public class MainActivity extends AppCompatActivity { setSupportActionBar(toolbar); mswEnableMainService = findViewById(R.id.activitymainSwitch1); - mswEnableMainService.setChecked(AppConfigs.getInstance(this).loadAppConfigs().isEnableService()); + mswEnableMainService.setChecked(AppConfigsUtil.getInstance(this).loadAppConfigs().isEnableService()); mLogView = findViewById(R.id.logview); diff --git a/timestamp/src/main/java/cc/winboll/studio/timestamp/MainService.java b/timestamp/src/main/java/cc/winboll/studio/timestamp/MainService.java index 6f35492..cc702d7 100644 --- a/timestamp/src/main/java/cc/winboll/studio/timestamp/MainService.java +++ b/timestamp/src/main/java/cc/winboll/studio/timestamp/MainService.java @@ -11,47 +11,38 @@ import android.app.Service; import android.content.ComponentName; import android.content.Context; import android.content.Intent; +import android.content.IntentFilter; import android.content.ServiceConnection; -import android.os.Handler; import android.os.IBinder; -import android.os.Message; import android.widget.RemoteViews; import android.widget.TextView; +import androidx.core.app.NotificationCompat; +import androidx.core.app.NotificationManagerCompat; import cc.winboll.studio.libappbase.LogUtils; import cc.winboll.studio.timestamp.AssistantService; import cc.winboll.studio.timestamp.MainService; -import cc.winboll.studio.timestamp.models.AppConfigs; +import cc.winboll.studio.timestamp.models.AppConfigsModel; import cc.winboll.studio.timestamp.receivers.ButtonClickReceiver; +import cc.winboll.studio.timestamp.utils.AppConfigsUtil; import cc.winboll.studio.timestamp.utils.NotificationHelper; import cc.winboll.studio.timestamp.utils.ServiceUtil; -import java.lang.ref.WeakReference; -import java.time.Instant; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.format.DateTimeFormatter; import java.util.Timer; -import java.util.TimerTask; -import android.content.IntentFilter; +import android.app.NotificationManager; public class MainService extends Service { public static String TAG = "MainService"; - public static final int MSG_UPDATE_TIMESTAMP = 0; - ButtonClickReceiver mButtonClickReceiver; - Intent intentMainService; - Intent mButtonBroadcastIntent; - PendingIntent mButtonPendingIntent; NotificationHelper mNotificationHelper; - Notification notification; + Notification mNotification; RemoteViews mRemoteViews; TextView mtvTimeStamp; Timer mTimer; private static boolean _mIsServiceAlive; public static final String EXTRA_APKFILEPATH = "EXTRA_APKFILEPATH"; final static int MSG_INSTALL_APK = 0; - MyHandler mMyHandler; + //MyHandler mMyHandler; MyServiceConnection mMyServiceConnection; MainActivity mInstallCompletedFollowUpActivity; @@ -63,21 +54,10 @@ public class MainService extends Service { @Override public void onCreate() { super.onCreate(); - + // 创建 RemoteViews 对象,并使用包含自定义 View 的布局 mRemoteViews = new RemoteViews(getPackageName(), R.layout.remoteviews_timestamp); - intentMainService = new Intent(this, MainActivity.class); - - // 创建点击按钮后要发送的广播 Intent - mButtonBroadcastIntent = new Intent(ButtonClickReceiver.BUTTON_COPYTIMESTAMP_ACTION); - mButtonPendingIntent = PendingIntent.getBroadcast( - this, // 上下文 - 0, // 请求码,用于区分不同的 PendingIntent - mButtonBroadcastIntent, // Intent - PendingIntent.FLAG_UPDATE_CURRENT // 标志位,用于更新已存在的 PendingIntent - ); - // 为按钮设置点击事件 - mRemoteViews.setOnClickPendingIntent(R.id.btn_copytimestamp, mButtonPendingIntent); + // 创建广播接收器实例 mButtonClickReceiver = new ButtonClickReceiver(); @@ -86,10 +66,10 @@ public class MainService extends Service { // 注册广播接收器 registerReceiver(mButtonClickReceiver, filter); - + LogUtils.d(TAG, "onCreate()"); _mIsServiceAlive = false; - mMyHandler = new MyHandler(MainService.this); + //mMyHandler = new MyHandler(MainService.this); if (mMyServiceConnection == null) { mMyServiceConnection = new MyServiceConnection(); } @@ -98,7 +78,7 @@ public class MainService extends Service { } private void run() { - AppConfigs appConfigs = AppConfigs.getInstance(MainService.this).loadAppConfigs(); + AppConfigsModel appConfigs = AppConfigsUtil.getInstance(MainService.this).loadAppConfigs(); if (appConfigs.isEnableService()) { if (_mIsServiceAlive == false) { // 设置运行状态 @@ -107,23 +87,14 @@ public class MainService extends Service { // 显示前台通知栏 mNotificationHelper = new NotificationHelper(this); //notification = helper.showForegroundNotification(intent, getString(R.string.app_name), getString(R.string.text_aboutservernotification)); - notification = mNotificationHelper.showCustomForegroundNotification(intentMainService, mRemoteViews, mRemoteViews); - startForeground(NotificationHelper.FOREGROUND_NOTIFICATION_ID, notification); - + mNotification = mNotificationHelper.showCustomForegroundNotification(new Intent(this, MainActivity.class), mRemoteViews, mRemoteViews); + startForeground(NotificationHelper.FOREGROUND_NOTIFICATION_ID, mNotification); + // 唤醒守护进程 wakeupAndBindAssistant(); LogUtils.d(TAG, "running..."); - mTimer = new Timer(); - TimerTask task = new TimerTask() { - @Override - public void run() { - //System.out.println("定时任务执行了"); - mMyHandler.sendEmptyMessage(MSG_UPDATE_TIMESTAMP); - } - }; - // 延迟1秒后开始执行,之后每隔2秒执行一次 - mTimer.schedule(task, 1000, 2000); + } else { @@ -149,14 +120,16 @@ public class MainService extends Service { LogUtils.d(TAG, "onStartCommand"); run(); - AppConfigs appConfigs = AppConfigs.getInstance(MainService.this).loadAppConfigs(); + AppConfigsModel appConfigs = AppConfigsUtil.getInstance(MainService.this).loadAppConfigs(); return appConfigs.isEnableService() ? Service.START_STICKY: super.onStartCommand(intent, flags, startId); } public static void setMainServiceStatus(Context context, boolean isEnable) { - AppConfigs appConfigs = AppConfigs.getInstance(context).loadAppConfigs(); + AppConfigsModel appConfigs = AppConfigsUtil.getInstance(context).loadAppConfigs(); appConfigs.setIsEnableService(isEnable); + AppConfigsUtil.getInstance(context).saveAppConfigs(); + Intent intent = new Intent(context, MainService.class); if (isEnable) { context.startService(intent); @@ -176,7 +149,7 @@ public class MainService extends Service { @Override public void onServiceDisconnected(ComponentName name) { //LogUtils.d(TAG, "call onServiceConnected(...)"); - AppConfigs appConfigs = AppConfigs.getInstance(MainService.this).loadAppConfigs(); + AppConfigsModel appConfigs = AppConfigsUtil.getInstance(MainService.this).loadAppConfigs(); if (appConfigs.isEnableService()) { // 唤醒守护进程 wakeupAndBindAssistant(); @@ -194,46 +167,43 @@ public class MainService extends Service { } } - void updateTimeStamp() { - long currentMillis = System.currentTimeMillis(); - Instant instant = Instant.ofEpochMilli(currentMillis); - LocalDateTime ldt = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()); - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - String formattedDateTime = ldt.format(formatter); - //System.out.println(formattedDateTime); - mRemoteViews.setTextViewText(R.id.tv_timestamp, formattedDateTime); - notification = mNotificationHelper.showCustomForegroundNotification(intentMainService, mRemoteViews, mRemoteViews); - //startForeground(NotificationHelper.FOREGROUND_NOTIFICATION_ID, notification); - } - - // - // 服务事务处理类 - // - class MyHandler extends Handler { - WeakReference weakReference; - MyHandler(MainService service) { - weakReference = new WeakReference(service); - } - public void handleMessage(Message message) { - MainService theService = weakReference.get(); - switch (message.what) { - case MSG_UPDATE_TIMESTAMP: - { - if (theService != null) { - theService.updateTimeStamp(); - } - break; - } - default: - break; - } - super.handleMessage(message); - } - - - } - - public void sendUpdateTimeStampMessage() { - - } +// void updateTimeStamp() { +// long currentMillis = System.currentTimeMillis(); +// Instant instant = Instant.ofEpochMilli(currentMillis); +// LocalDateTime ldt = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()); +// String szTimeStampFormatString = AppConfigs.getInstance(this).getTimeStampFormatString(); +// DateTimeFormatter formatter = DateTimeFormatter.ofPattern(szTimeStampFormatString); +// String formattedDateTime = ldt.format(formatter); +// //System.out.println(formattedDateTime); +// mRemoteViews.setTextViewText(R.id.tv_timestamp, formattedDateTime); +// notification = mNotificationHelper.showCustomForegroundNotification(intentMainService, mRemoteViews, mRemoteViews); +// //startForeground(NotificationHelper.FOREGROUND_NOTIFICATION_ID, notification); +// } +// +// // +// // 服务事务处理类 +// // +// class MyHandler extends Handler { +// WeakReference weakReference; +// MyHandler(MainService service) { +// weakReference = new WeakReference(service); +// } +// public void handleMessage(Message message) { +// MainService theService = weakReference.get(); +// switch (message.what) { +// case MSG_UPDATE_TIMESTAMP: +// { +// if (theService != null) { +// theService.updateTimeStamp(); +// } +// break; +// } +// default: +// break; +// } +// super.handleMessage(message); +// } +// +// +// } } diff --git a/timestamp/src/main/java/cc/winboll/studio/timestamp/models/AppConfigs.java b/timestamp/src/main/java/cc/winboll/studio/timestamp/models/AppConfigs.java deleted file mode 100644 index 7457766..0000000 --- a/timestamp/src/main/java/cc/winboll/studio/timestamp/models/AppConfigs.java +++ /dev/null @@ -1,128 +0,0 @@ -package cc.winboll.studio.timestamp.models; - -/** - * @Author ZhanGSKen - * @Date 2025/05/05 09:51 - * @Describe 应用配置数据模型 - */ -import android.content.Context; -import android.util.JsonReader; -import android.util.JsonWriter; -import cc.winboll.studio.libappbase.LogUtils; -import cc.winboll.studio.timestamp.models.AppConfigs; -import cc.winboll.studio.timestamp.utils.FileUtil; -import java.io.IOException; -import java.io.Serializable; -import java.io.StringReader; -import java.io.StringWriter; - -public class AppConfigs implements Serializable { - - public static final String TAG = "AppConfigs"; - - volatile static AppConfigs _AppConfigs; - Context mContext; - - // 是否启动服务 - boolean isEnableService; - - AppConfigs(Context context) { - this.mContext = context; - this.isEnableService = false; - } - - public synchronized static AppConfigs getInstance(Context context) { - if (_AppConfigs == null) { - _AppConfigs = new AppConfigs(context); - _AppConfigs.loadAppConfigs(); - } - return _AppConfigs; - } - - public void setIsEnableService(boolean isEnableService) { - this.isEnableService = isEnableService; - } - - public boolean isEnableService() { - return isEnableService; - } - - @Override - public String toString() { - // 创建 JsonWriter 对象 - StringWriter stringWriter = new StringWriter(); - JsonWriter writer = new - JsonWriter(stringWriter); - try { - // 开始 JSON 对象 - writer.beginObject(); - - // 写入键值对 - writer.name("isEnableService").value(this.isEnableService); - - // 结束 JSON 对象 - writer.endObject(); - return stringWriter.toString(); - } catch (IOException e) { - LogUtils.d(TAG, e.getMessage(), Thread.currentThread().getStackTrace()); - } - // 获取 JSON 字符串 - return ""; - } - - public AppConfigs parseAppConfigs(String szAppConfigs) { - // 创建 JsonWriter 对象 - StringReader stringReader = new StringReader(szAppConfigs); - JsonReader jsonReader = new - JsonReader(stringReader); - try { - // 开始 JSON 对象 - jsonReader.beginObject(); - - // 写入键值对 - while (jsonReader.hasNext()) { - String name = jsonReader.nextName(); - if (name.equals("isEnableService")) { - setIsEnableService(jsonReader.nextBoolean()); - } else { - jsonReader.skipValue(); - } - } - // 结束 JSON 对象 - jsonReader.endObject(); - return this; - } catch (IOException e) { - LogUtils.d(TAG, e.getMessage(), Thread.currentThread().getStackTrace()); - } - // 获取 JSON 字符串 - return null; - } - - static String getDataPath(Context context) { - return context.getExternalFilesDir(TAG) + "/" + TAG + ".json"; - } - - public AppConfigs loadAppConfigs() { - AppConfigs appConfigs = null; - try { - String szJson = FileUtil.readFile(getDataPath(mContext)); - appConfigs = parseAppConfigs(szJson); - - if (appConfigs != null) { - _AppConfigs = appConfigs; - } - } catch (IOException e) { - LogUtils.d(TAG, e.getMessage(), Thread.currentThread().getStackTrace()); - } - return _AppConfigs; - } - - public void saveAppConfigs(AppConfigs appConfigs) { - try { - String szJson = appConfigs.toString(); - FileUtil.writeFile(getDataPath(mContext), szJson); - } catch (IOException e) { - LogUtils.d(TAG, e.getMessage(), Thread.currentThread().getStackTrace()); - } - } -} diff --git a/timestamp/src/main/java/cc/winboll/studio/timestamp/models/AppConfigsModel.java b/timestamp/src/main/java/cc/winboll/studio/timestamp/models/AppConfigsModel.java new file mode 100644 index 0000000..c2e25b1 --- /dev/null +++ b/timestamp/src/main/java/cc/winboll/studio/timestamp/models/AppConfigsModel.java @@ -0,0 +1,83 @@ +package cc.winboll.studio.timestamp.models; + +/** + * @Author ZhanGSKen + * @Date 2025/05/05 09:51 + * @Describe 应用配置数据模型 + */ +import android.content.Context; +import android.util.JsonReader; +import android.util.JsonWriter; +import cc.winboll.studio.libappbase.BaseBean; +import cc.winboll.studio.timestamp.models.AppConfigsModel; +import java.io.IOException; + +public class AppConfigsModel extends BaseBean { + + public static final String TAG = "AppConfigs"; + + // 是否启动服务 + boolean isEnableService; + String timeStampFormatString; + + public AppConfigsModel() { + this.isEnableService = false; + this.timeStampFormatString = "yyyy-MM-dd HH:mm:ss"; + } + + public void setTimeStampFormatString(String timeStampFormatString) { + this.timeStampFormatString = timeStampFormatString; + } + + public String getTimeStampFormatString() { + return timeStampFormatString; + } + + public void setIsEnableService(boolean isEnableService) { + this.isEnableService = isEnableService; + } + + public boolean isEnableService() { + return isEnableService; + } + + @Override + public String getName() { + return AppConfigsModel.class.getName(); + } + + @Override + public void writeThisToJsonWriter(JsonWriter jsonWriter) throws IOException { + super.writeThisToJsonWriter(jsonWriter); + jsonWriter.name("isEnableService").value(isEnableService()); + jsonWriter.name("timeStampFormatString").value(getTimeStampFormatString()); + } + + @Override + public boolean initObjectsFromJsonReader(JsonReader jsonReader, String name) throws IOException { + if (super.initObjectsFromJsonReader(jsonReader, name)) { return true; } else { + if (name.equals("isEnableService")) { + setIsEnableService(jsonReader.nextBoolean()); + } else if (name.equals("timeStampFormatString")) { + setTimeStampFormatString(jsonReader.nextString()); + } else { + return false; + } + } + return true; + } + + @Override + public BaseBean readBeanFromJsonReader(JsonReader jsonReader) throws IOException { + jsonReader.beginObject(); + while (jsonReader.hasNext()) { + String name = jsonReader.nextName(); + if (!initObjectsFromJsonReader(jsonReader, name)) { + jsonReader.skipValue(); + } + } + // 结束 JSON 对象 + jsonReader.endObject(); + return this; + } +} diff --git a/timestamp/src/main/java/cc/winboll/studio/timestamp/utils/AppConfigsUtil.java b/timestamp/src/main/java/cc/winboll/studio/timestamp/utils/AppConfigsUtil.java new file mode 100644 index 0000000..55a9927 --- /dev/null +++ b/timestamp/src/main/java/cc/winboll/studio/timestamp/utils/AppConfigsUtil.java @@ -0,0 +1,58 @@ +package cc.winboll.studio.timestamp.utils; + +/** + * @Author ZhanGSKen + * @Date 2025/05/05 14:00 + * @Describe AppConfigsUtil + */ +import android.content.Context; +import android.util.JsonReader; +import android.util.JsonWriter; +import cc.winboll.studio.libappbase.BaseBean; +import cc.winboll.studio.timestamp.models.AppConfigsModel; +import java.io.IOException; + +public class AppConfigsUtil { + + public static final String TAG = "AppConfigsUtil"; + + volatile static AppConfigsUtil _AppConfigsUtil; + Context mContext; + AppConfigsModel mAppConfigsModel; + + AppConfigsUtil(Context context) { + this.mContext = context; + } + + public synchronized static AppConfigsUtil getInstance(Context context){ + if(_AppConfigsUtil == null) { + _AppConfigsUtil = new AppConfigsUtil(context); + _AppConfigsUtil.loadAppConfigs(); + } + return _AppConfigsUtil; + } + + public AppConfigsModel getAppConfigsModel() { + return mAppConfigsModel; + } + + public AppConfigsModel loadAppConfigs() { + AppConfigsModel appConfigsModel = null; + appConfigsModel = AppConfigsModel.loadBean(mContext, AppConfigsModel.class); + if (appConfigsModel != null) { + mAppConfigsModel = appConfigsModel; + } else { + saveAppConfigs(new AppConfigsModel()); + _AppConfigsUtil = this; + } + return mAppConfigsModel; + } + + public void saveAppConfigs(AppConfigsModel appConfigsModel) { + AppConfigsModel.saveBean(mContext, appConfigsModel); + } + + public void saveAppConfigs() { + AppConfigsModel.saveBean(mContext, mAppConfigsModel); + } +} diff --git a/timestamp/src/main/java/cc/winboll/studio/timestamp/views/TimeStampView.java b/timestamp/src/main/java/cc/winboll/studio/timestamp/views/TimeStampView.java new file mode 100644 index 0000000..018cdf7 --- /dev/null +++ b/timestamp/src/main/java/cc/winboll/studio/timestamp/views/TimeStampView.java @@ -0,0 +1,126 @@ +package cc.winboll.studio.timestamp.views; + +/** + * @Author ZhanGSKen + * @Date 2025/05/05 12:53 + * @Describe TimeStampView + */ +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.os.Handler; +import android.os.Message; +import android.util.AttributeSet; +import android.view.View; +import android.widget.TextView; +import cc.winboll.studio.libappbase.LogUtils; +import cc.winboll.studio.timestamp.R; +import cc.winboll.studio.timestamp.utils.AppConfigsUtil; +import com.hjq.toast.ToastUtils; +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.Timer; +import java.util.TimerTask; + +public class TimeStampView extends TextView { + + public static final String TAG = "TimeStampView"; + + public static final int MSG_UPDATE_TIMESTAMP = 0; + + private Paint paint; +// Context mContext; +// Timer mTimer; +// TextView mtvTimeStamp; +// MyHandler mMyHandler; + + public TimeStampView(Context context) { + super(context); + //initView(context); + init(); + } + + public TimeStampView(Context context, AttributeSet attrs) { + super(context, attrs); + //initView(context); + init(); + } + + public TimeStampView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + //initView(context); + init(); + } + + private void init() { + paint = new Paint(); + paint.setColor(Color.RED); + paint.setStyle(Paint.Style.FILL); + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + canvas.drawCircle(50, 50, 30, paint); + } + +// void initView(Context context) { +// View viewMain = inflate(context, R.layout.view_timestamp, null); +// this.mContext = context; +// mtvTimeStamp = viewMain.findViewById(R.id.tv_timestamp); +// addView(viewMain); +// +// mMyHandler = new MyHandler(); +// +// mTimer = new Timer(); +// TimerTask task = new TimerTask() { +// @Override +// public void run() { +// //System.out.println("定时任务执行了"); +// mMyHandler.sendEmptyMessage(MSG_UPDATE_TIMESTAMP); +// +// } +// }; +// // 延迟1秒后开始执行,之后每隔100毫秒执行一次 +// mTimer.schedule(task, 1000, 1000); +// } + +// public void updateTimeStamp() { +// try { +// long currentMillis = System.currentTimeMillis(); +// Instant instant = Instant.ofEpochMilli(currentMillis); +// LocalDateTime ldt = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()); +// String szTimeStampFormatString = AppConfigsUtil.getInstance(this.mContext).getAppConfigsModel().getTimeStampFormatString(); +// DateTimeFormatter formatter = DateTimeFormatter.ofPattern(szTimeStampFormatString); +// String formattedDateTime = ldt.format(formatter); +// //System.out.println(formattedDateTime); +// mtvTimeStamp.setText(formattedDateTime); +// } catch (Exception e) { +// LogUtils.d(TAG, e, Thread.currentThread().getStackTrace()); +// ToastUtils.show(e); +// } +// } + + + // + // 服务事务处理类 + // +// class MyHandler extends Handler { +// +// public void handleMessage(Message message) { +// switch (message.what) { +// case MSG_UPDATE_TIMESTAMP: +// { +// updateTimeStamp(); +// break; +// } +// default: +// break; +// } +// super.handleMessage(message); +// } +// } +} diff --git a/timestamp/src/main/res/layout/activity_main.xml b/timestamp/src/main/res/layout/activity_main.xml index d60c8cb..dfc8fd7 100644 --- a/timestamp/src/main/res/layout/activity_main.xml +++ b/timestamp/src/main/res/layout/activity_main.xml @@ -22,7 +22,8 @@ + android:layout_height="wrap_content" + android:padding="10dp"> + + + + + + + + + + +