diff --git a/timestamp/build.properties b/timestamp/build.properties
index 6a8dc63..e054689 100644
--- a/timestamp/build.properties
+++ b/timestamp/build.properties
@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
-#Tue May 06 02:08:16 GMT 2025
+#Tue May 06 02:45:43 GMT 2025
stageCount=0
libraryProject=
baseVersion=15.0
publishVersion=15.0.0
-buildCount=101
+buildCount=108
baseBetaVersion=15.0.1
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 db19df6..2236bb2 100644
--- a/timestamp/src/main/java/cc/winboll/studio/timestamp/MainActivity.java
+++ b/timestamp/src/main/java/cc/winboll/studio/timestamp/MainActivity.java
@@ -2,20 +2,30 @@ package cc.winboll.studio.timestamp;
import android.os.Bundle;
import android.view.View;
+import android.widget.EditText;
import android.widget.Switch;
+import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libappbase.LogView;
+import cc.winboll.studio.timestamp.MainService;
import cc.winboll.studio.timestamp.R;
import cc.winboll.studio.timestamp.utils.AppConfigsUtil;
-import cc.winboll.studio.timestamp.utils.TimeStampRemoteViewsUtil;
import com.hjq.toast.ToastUtils;
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
public class MainActivity extends AppCompatActivity {
public static final String TAG = "MainActivity";
+ EditText metTimeStampFormatString;
+ TextView mtvTimeStampFormatString;
+ EditText metTimeStampCopyFormatString;
+ TextView mtvTimeStampCopyFormatString;
LogView mLogView;
Switch mswEnableMainService;
@@ -27,7 +37,17 @@ public class MainActivity extends AppCompatActivity {
Toolbar toolbar=(Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
-
+
+ metTimeStampFormatString = findViewById(R.id.et_timestampformatstring);
+ mtvTimeStampFormatString = findViewById(R.id.tv_timestampformatstring);
+ metTimeStampCopyFormatString = findViewById(R.id.et_timestampcopyformatstring);
+ mtvTimeStampCopyFormatString = findViewById(R.id.tv_timestampcopyformatstring);
+
+ metTimeStampFormatString.setText(AppConfigsUtil.getInstance(this).getAppConfigsModel().getTimeStampFormatString());
+ showPreViewResult(metTimeStampFormatString, mtvTimeStampFormatString);
+ metTimeStampCopyFormatString.setText(AppConfigsUtil.getInstance(this).getAppConfigsModel().getTimeStampCopyFormatString());
+ showPreViewResult(metTimeStampCopyFormatString, mtvTimeStampCopyFormatString);
+
mswEnableMainService = findViewById(R.id.activitymainSwitch1);
mswEnableMainService.setChecked(AppConfigsUtil.getInstance(this).loadAppConfigs().isEnableService());
@@ -46,6 +66,35 @@ public class MainActivity extends AppCompatActivity {
public void onSetMainServiceStatus(View view) {
MainService.setMainServiceStatus(this, mswEnableMainService.isChecked());
+ }
+ public void onSaveFormatString(View view) {
+ if(showPreViewResult(metTimeStampFormatString, mtvTimeStampFormatString)) {
+ AppConfigsUtil.getInstance(this).getAppConfigsModel().setTimeStampFormatString(metTimeStampFormatString.getText().toString());
+ AppConfigsUtil.getInstance(this).saveAppConfigs();
+ }
+ }
+
+ public void onSaveCopyFormatString(View view) {
+ if(showPreViewResult(metTimeStampCopyFormatString, mtvTimeStampCopyFormatString)) {
+ AppConfigsUtil.getInstance(this).getAppConfigsModel().setTimeStampCopyFormatString(metTimeStampCopyFormatString.getText().toString());
+ AppConfigsUtil.getInstance(this).saveAppConfigs();
+ }
+ }
+
+ boolean showPreViewResult(EditText etFormat, TextView tvShow) {
+ try {
+ long currentMillis = System.currentTimeMillis();
+ Instant instant = Instant.ofEpochMilli(currentMillis);
+ LocalDateTime ldt = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
+ String szTimeStampFormatString = etFormat.getText().toString();
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern(szTimeStampFormatString);
+ String formattedDateTime = ldt.format(formatter);
+ tvShow.setText(formattedDateTime);
+ return true;
+ } catch (Exception e) {
+ LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
+ }
+ return false;
}
}
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
index c2e25b1..8b87647 100644
--- a/timestamp/src/main/java/cc/winboll/studio/timestamp/models/AppConfigsModel.java
+++ b/timestamp/src/main/java/cc/winboll/studio/timestamp/models/AppConfigsModel.java
@@ -18,11 +18,23 @@ public class AppConfigsModel extends BaseBean {
// 是否启动服务
boolean isEnableService;
+ // 时间戳显示格式
String timeStampFormatString;
+ // 时间戳拷贝格式
+ String timeStampCopyFormatString;
public AppConfigsModel() {
this.isEnableService = false;
this.timeStampFormatString = "yyyy-MM-dd HH:mm:ss";
+ this.timeStampCopyFormatString = "yyyy_MM_dd-HH_mm_ss";
+ }
+
+ public void setTimeStampCopyFormatString(String timeStampCopyFormatString) {
+ this.timeStampCopyFormatString = timeStampCopyFormatString;
+ }
+
+ public String getTimeStampCopyFormatString() {
+ return timeStampCopyFormatString;
}
public void setTimeStampFormatString(String timeStampFormatString) {
diff --git a/timestamp/src/main/java/cc/winboll/studio/timestamp/receivers/ButtonClickReceiver.java b/timestamp/src/main/java/cc/winboll/studio/timestamp/receivers/ButtonClickReceiver.java
index 3a673db..5228f0e 100644
--- a/timestamp/src/main/java/cc/winboll/studio/timestamp/receivers/ButtonClickReceiver.java
+++ b/timestamp/src/main/java/cc/winboll/studio/timestamp/receivers/ButtonClickReceiver.java
@@ -15,7 +15,7 @@ public class ButtonClickReceiver extends BroadcastReceiver {
public static final String TAG = "ButtonClickReceiver";
- public static final String BUTTON_COPYTIMESTAMP_ACTION = "com.example.BUTTON_CLICK_ACTION";
+ public static final String BUTTON_COPYTIMESTAMP_ACTION = "cc.winboll.studio.timestamp.receivers.ButtonClickReceiver.BUTTON_COPYTIMESTAMP_ACTION";
@Override
public void onReceive(Context context, Intent intent) {
diff --git a/timestamp/src/main/java/cc/winboll/studio/timestamp/utils/TimeStampRemoteViewsUtil.java b/timestamp/src/main/java/cc/winboll/studio/timestamp/utils/TimeStampRemoteViewsUtil.java
index 5cce4ac..acb1467 100644
--- a/timestamp/src/main/java/cc/winboll/studio/timestamp/utils/TimeStampRemoteViewsUtil.java
+++ b/timestamp/src/main/java/cc/winboll/studio/timestamp/utils/TimeStampRemoteViewsUtil.java
@@ -7,16 +7,14 @@ package cc.winboll.studio.timestamp.utils;
*/
import android.app.NotificationChannel;
import android.app.NotificationManager;
-import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.widget.RemoteViews;
-import androidx.core.app.NotificationCompat;
-import cc.winboll.studio.timestamp.MainActivity;
-import cc.winboll.studio.timestamp.R;
-import cc.winboll.studio.timestamp.views.TimeStampView;
import android.widget.TextView;
+import androidx.core.app.NotificationCompat;
+import cc.winboll.studio.timestamp.R;
+import cc.winboll.studio.timestamp.receivers.ButtonClickReceiver;
public class TimeStampRemoteViewsUtil {
@@ -66,12 +64,23 @@ public class TimeStampRemoteViewsUtil {
// 这里虽然不能直接设置字体大小,但可以通过反射等方式尝试(不推荐,且有兼容性问题)
// 创建点击通知后的意图
- Intent intent = new Intent(mContext, MainActivity.class);
- PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
-
+ //Intent intent = new Intent(mContext, MainActivity.class);
+ //PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
// 设置通知的点击事件
- mRemoteViews.setOnClickPendingIntent(R.id.btn_copytimestamp, pendingIntent);
+ //mRemoteViews.setOnClickPendingIntent(R.id.btn_copytimestamp, pendingIntent);
+
+ // 创建点击按钮后要发送的广播 Intent
+ Intent broadcastIntent = new Intent(ButtonClickReceiver.BUTTON_COPYTIMESTAMP_ACTION);
+ android.app.PendingIntent pendingIntent = android.app.PendingIntent.getBroadcast(
+ mContext,
+ 0,
+ broadcastIntent,
+ android.app.PendingIntent.FLAG_UPDATE_CURRENT
+ );
+ // 为按钮设置点击事件
+ mRemoteViews.setOnClickPendingIntent(R.id.btn_copytimestamp, pendingIntent);
+
// 构建通知
NotificationCompat.Builder builder = new NotificationCompat.Builder(mContext, CHANNEL_ID)
.setSmallIcon(android.R.drawable.ic_dialog_info)
diff --git a/timestamp/src/main/res/layout/activity_main.xml b/timestamp/src/main/res/layout/activity_main.xml
index dfc8fd7..f7bf52a 100644
--- a/timestamp/src/main/res/layout/activity_main.xml
+++ b/timestamp/src/main/res/layout/activity_main.xml
@@ -39,9 +39,17 @@
android:layout_width="match_parent"
android:layout_height="wrap_content">
-
+
+
+
@@ -61,8 +69,52 @@
+ android:text="ApplySave"
+ android:id="@+id/btn_saveformatstring"
+ android:textAllCaps="false"
+ android:onClick="onSaveFormatString"/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+