Merge remote-tracking branch 'gitee/timestamp' into appbase
This commit is contained in:
		| @@ -1,8 +1,8 @@ | ||||
| #Created by .winboll/winboll_app_build.gradle | ||||
| #Wed May 07 15:07:02 HKT 2025 | ||||
| stageCount=2 | ||||
| #Mon Jul 28 11:36:51 HKT 2025 | ||||
| stageCount=4 | ||||
| libraryProject= | ||||
| baseVersion=15.1 | ||||
| publishVersion=15.1.1 | ||||
| publishVersion=15.1.3 | ||||
| buildCount=0 | ||||
| baseBetaVersion=15.1.2 | ||||
| baseBetaVersion=15.1.4 | ||||
|   | ||||
| @@ -3,6 +3,9 @@ | ||||
|     xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     package="cc.winboll.studio.timestamp"> | ||||
|  | ||||
|     <!-- 开机启动 --> | ||||
|     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> | ||||
|  | ||||
|     <!-- 运行前台服务 --> | ||||
|     <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/> | ||||
|  | ||||
| @@ -45,6 +48,20 @@ | ||||
|  | ||||
|         <service android:name=".AssistantService"/> | ||||
|  | ||||
|         <receiver | ||||
|             android:name=".receivers.MainReceiver" | ||||
|             android:enabled="true" | ||||
|             android:exported="false" | ||||
|             android:directBootAware="true"> | ||||
|  | ||||
|             <intent-filter> | ||||
|  | ||||
|                 <action android:name="android.intent.action.BOOT_COMPLETED"/> | ||||
|  | ||||
|             </intent-filter> | ||||
|  | ||||
|         </receiver> | ||||
|  | ||||
|     </application> | ||||
|  | ||||
| </manifest> | ||||
|   | ||||
| @@ -5,6 +5,7 @@ import android.view.View; | ||||
| import android.widget.EditText; | ||||
| import android.widget.Switch; | ||||
| import android.widget.TextView; | ||||
| import android.widget.Toast; | ||||
| import androidx.appcompat.app.AppCompatActivity; | ||||
| import androidx.appcompat.widget.Toolbar; | ||||
| import cc.winboll.studio.libappbase.LogUtils; | ||||
| @@ -12,6 +13,8 @@ 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.ClipboardUtil; | ||||
| import cc.winboll.studio.timestamp.utils.TimeStampUtil; | ||||
| import com.hjq.toast.ToastUtils; | ||||
| import java.time.Instant; | ||||
| import java.time.LocalDateTime; | ||||
| @@ -97,4 +100,22 @@ public class MainActivity extends AppCompatActivity { | ||||
|         } | ||||
|         return false; | ||||
|     } | ||||
| 	 | ||||
| 	public void onTimeStamp(View view) { | ||||
| 		// 在这里编写按钮点击后要执行的代码 | ||||
| 		TimeStampUtil.getInstance(this).genTimeStamp(); | ||||
| 		String formattedDateTime = TimeStampUtil.getInstance(this).getTimeStampCopyString(); | ||||
| 		ClipboardUtil.copyTextToClipboard(this, formattedDateTime); | ||||
| 		 | ||||
| 		// 更新时间戳文本框显示内容 | ||||
| 		EditText etTimeStamp = findViewById(R.id.et_timestamp); | ||||
| 		etTimeStamp.setText(formattedDateTime); | ||||
|  | ||||
| 		// 输出一个提示音 | ||||
| 		TimeStampUtil.getInstance(this).playNotifyMusic(this); | ||||
| 		 | ||||
| 		// 比如显示一个 Toast | ||||
| 		Toast.makeText(this, "时间戳:\n" + TimeStampUtil.getInstance(this).getTimeStampCopyString() + "\n已拷贝到剪贴板。", Toast.LENGTH_SHORT).show(); | ||||
| 		MainService.updateCopiedTimeStamp(); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -0,0 +1,40 @@ | ||||
| package cc.winboll.studio.timestamp.receivers; | ||||
|  | ||||
| import android.content.BroadcastReceiver; | ||||
| import android.content.Context; | ||||
| import android.content.Intent; | ||||
| import cc.winboll.studio.libappbase.LogUtils; | ||||
| import cc.winboll.studio.timestamp.MainService; | ||||
| import cc.winboll.studio.timestamp.models.AppConfigsModel; | ||||
| import cc.winboll.studio.timestamp.utils.AppConfigsUtil; | ||||
|  | ||||
| /** | ||||
|  * @Author ZhanGSKen&豆包大模型<zhangsken@188.com> | ||||
|  * @Date 2025/07/28 11:15 | ||||
|  * @Describe MainReceiver | ||||
|  */ | ||||
| public class MainReceiver extends BroadcastReceiver { | ||||
|  | ||||
|     public static final String TAG = "MainReceiver"; | ||||
|  | ||||
|     static final String ACTION_BOOT_COMPLETED = "android.intent.action.BOOT_COMPLETED"; | ||||
|  | ||||
|     AppConfigsUtil mAppConfigsUtil; | ||||
|  | ||||
|     @Override | ||||
|     public void onReceive(Context context, Intent intent) { | ||||
|         String szAction = intent.getAction(); | ||||
|         if (szAction.equals(ACTION_BOOT_COMPLETED)) { | ||||
|             AppConfigsModel appConfigs = AppConfigsUtil.getInstance(context).loadAppConfigs(); | ||||
| 			boolean isEnable = appConfigs.isEnableService(); | ||||
| 			AppConfigsUtil.getInstance(context).saveAppConfigs(); | ||||
|  | ||||
| 			Intent intentMainService = new Intent(context, MainService.class); | ||||
| 			if (isEnable) { | ||||
| 				context.startService(intentMainService); | ||||
| 			} | ||||
| 			LogUtils.i(TAG, "System Boot And Start ManagerService Completed!"); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -131,18 +131,12 @@ public class NotificationHelper { | ||||
|  | ||||
|         service.startForeground(ID_MSG_SERVICE, mForegroundNotification); | ||||
| 		 | ||||
|         // 播放默认短信铃声 | ||||
|         Uri defaultSmsRingtoneUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); | ||||
|         AudioPlayerUriUtil.playAudio(service, defaultSmsRingtoneUri); | ||||
|  | ||||
|         // 播放应用铃声 | ||||
|         // 获取MP3文件的Uri | ||||
|         Uri soundUri = Uri.parse("android.resource://" + service.getPackageName() + "/" + R.raw.diweiyi); | ||||
|         AudioPlayerUriUtil.playAudio(service, soundUri); | ||||
| 		TimeStampUtil.getInstance(service).playNotifyMusic(service); | ||||
|     } | ||||
| 	 | ||||
|      | ||||
|      | ||||
|  | ||||
| //    public void sendSMSNotification(Context context, MessageNotificationBean messageNotificationBean) { | ||||
| //        NotificationManager notificationManager = (NotificationManager) context.getSystemService( | ||||
| //            Context.NOTIFICATION_SERVICE); | ||||
|   | ||||
| @@ -6,6 +6,8 @@ package cc.winboll.studio.timestamp.utils; | ||||
|  * @Describe TimeStampUtil | ||||
|  */ | ||||
| import android.content.Context; | ||||
| import android.net.Uri; | ||||
| import cc.winboll.studio.timestamp.R; | ||||
| import java.time.Instant; | ||||
| import java.time.LocalDateTime; | ||||
| import java.time.ZoneId; | ||||
| @@ -55,4 +57,19 @@ public class TimeStampUtil { | ||||
|         String formattedDateTime = ldt.format(formatter); | ||||
|         return formattedDateTime; | ||||
|     } | ||||
| 	 | ||||
|  | ||||
| 	// | ||||
| 	// 播放时间戳确定时的提示音乐 | ||||
| 	// | ||||
| 	public static void playNotifyMusic(Context context) { | ||||
|         // 播放默认短信铃声 | ||||
|         //Uri defaultSmsRingtoneUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); | ||||
|         //AudioPlayerUriUtil.playAudio(context, defaultSmsRingtoneUri); | ||||
|  | ||||
|         // 播放应用铃声 | ||||
|         // 获取MP3文件的Uri | ||||
|         Uri soundUri = Uri.parse("android.resource://" + context.getPackageName() + "/" + R.raw.diweiyi); | ||||
|         AudioPlayerUriUtil.playAudio(context, soundUri); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -1,6 +1,16 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <LinearLayout | ||||
| 	xmlns:android="http://schemas.android.com/apk/res/android" | ||||
| 	android:orientation="vertical" | ||||
| 	android:layout_width="wrap_content" | ||||
| 	android:layout_height="wrap_content"> | ||||
|  | ||||
| 	<ScrollView | ||||
| 		android:layout_width="match_parent" | ||||
| 		android:layout_height="0dp" | ||||
| 		android:layout_weight="1.0"> | ||||
|  | ||||
| 		<LinearLayout | ||||
| 			xmlns:app="http://schemas.android.com/apk/res-auto" | ||||
| 			android:layout_width="match_parent" | ||||
| 			android:layout_height="match_parent" | ||||
| @@ -119,26 +129,52 @@ | ||||
| 			</LinearLayout> | ||||
|  | ||||
| 			<LinearLayout | ||||
| 		android:orientation="vertical" | ||||
| 				android:orientation="horizontal" | ||||
| 				android:layout_width="match_parent" | ||||
| 		android:layout_height="0dp" | ||||
| 		android:layout_weight="1.0" | ||||
| 		android:gravity="center_vertical|center_horizontal"> | ||||
| 				android:layout_height="wrap_content"> | ||||
|  | ||||
| 				<TextView | ||||
| 					android:layout_width="wrap_content" | ||||
| 					android:layout_height="wrap_content" | ||||
| 					android:text="当前截取的时间戳为:"/> | ||||
|  | ||||
| 			</LinearLayout> | ||||
|  | ||||
| 			<LinearLayout | ||||
| 				android:orientation="vertical" | ||||
| 				android:layout_width="match_parent" | ||||
| 		android:layout_height="0dp" | ||||
| 		android:layout_weight="1.0"> | ||||
| 				android:layout_height="wrap_content" | ||||
| 				android:gravity="center_vertical|center_horizontal"> | ||||
|  | ||||
| 		<cc.winboll.studio.libappbase.LogView | ||||
| 			android:layout_width="match_parent" | ||||
| 			android:layout_height="match_parent" | ||||
| 			android:id="@+id/logview"/> | ||||
| 				<ImageButton | ||||
| 					android:layout_width="100dp" | ||||
| 					android:layout_height="100dp" | ||||
| 					android:onClick="onTimeStamp" | ||||
| 					android:background="@drawable/ic_timestamp"/> | ||||
|  | ||||
| 			</LinearLayout> | ||||
|  | ||||
| 			<LinearLayout | ||||
| 				android:orientation="horizontal" | ||||
| 				android:layout_width="match_parent" | ||||
| 				android:layout_height="wrap_content"> | ||||
|  | ||||
| 				<EditText | ||||
| 					android:layout_width="match_parent" | ||||
| 					android:ems="10" | ||||
| 					android:layout_height="wrap_content" | ||||
| 					android:id="@+id/et_timestamp"/> | ||||
|  | ||||
| 			</LinearLayout> | ||||
|  | ||||
| 		</LinearLayout> | ||||
|  | ||||
| 	</ScrollView> | ||||
|  | ||||
| 	<cc.winboll.studio.libappbase.LogView | ||||
| 		android:layout_width="match_parent" | ||||
| 		android:layout_height="200dp" | ||||
| 		android:id="@+id/logview"/> | ||||
|  | ||||
| </LinearLayout> | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 ZhanGSKen
					ZhanGSKen