Compare commits

...

10 Commits

Author SHA1 Message Date
ZhanGSKen
48623a2805 更新说明书 2025-09-01 23:23:18 +08:00
ZhanGSKen
2739627aff <timestamp>APK 15.1.3 release Publish. 2025-07-28 11:36:51 +08:00
ZhanGSKen
58e0be9cf4 添加开机启动功能。 2025-07-28 11:35:30 +08:00
ZhanGSKen
8bb80ef575 <timestamp>APK 15.1.2 release Publish. 2025-07-24 15:25:52 +08:00
ZhanGSKen
c1e6e32809 在主界面添加时间戳截取按钮 2025-07-24 15:22:18 +08:00
ZhanGSKen
23920a7ff1 Merge remote-tracking branch 'origin/aes' into appbase 2025-07-24 08:25:21 +08:00
ZhanGSKen
17c373c490 <appbase>APK 15.9.1 release Publish. 2025-07-17 11:39:14 +08:00
ZhanGSKen
753032efed <libaes>Library Release 15.9.2 2025-06-28 12:59:55 +08:00
ZhanGSKen
2b4c43c9af <aes>APK 15.9.2 release Publish. 2025-06-28 12:59:30 +08:00
ZhanGSKen
711c98d556 应用介绍页更新 2025-06-28 12:42:52 +08:00
15 changed files with 291 additions and 164 deletions

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Thu Jun 19 20:42:40 HKT 2025 #Sat Jun 28 12:59:51 HKT 2025
stageCount=2 stageCount=3
libraryProject=libaes libraryProject=libaes
baseVersion=15.9 baseVersion=15.9
publishVersion=15.9.1 publishVersion=15.9.2
buildCount=0 buildCount=0
baseBetaVersion=15.9.2 baseBetaVersion=15.9.3

View File

@@ -83,7 +83,7 @@ public class AboutActivity extends AppCompatActivity implements IWinBoLLActivity
appInfo.setAppGitOwner("Studio"); appInfo.setAppGitOwner("Studio");
appInfo.setAppGitAPPBranch(szBranchName); appInfo.setAppGitAPPBranch(szBranchName);
appInfo.setAppGitAPPSubProjectFolder(szBranchName); appInfo.setAppGitAPPSubProjectFolder(szBranchName);
appInfo.setAppHomePage("https://discuz.winboll.cc/forum.php?mod=viewthread&tid=2&fromuid=1"); appInfo.setAppHomePage("https://discuz.winboll.cc/forum.php?mod=viewthread&tid=3&extra=page%3D1");
appInfo.setAppAPKName("AES"); appInfo.setAppAPKName("AES");
appInfo.setAppAPKFolderName("AES"); appInfo.setAppAPKFolderName("AES");
//appInfo.setIsAddDebugTools(false); //appInfo.setIsAddDebugTools(false);

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Thu Jul 17 11:24:17 HKT 2025 #Thu Jul 17 11:39:14 HKT 2025
stageCount=1 stageCount=2
libraryProject=libappbase libraryProject=libappbase
baseVersion=15.9 baseVersion=15.9
publishVersion=15.9.0 publishVersion=15.9.1
buildCount=0 buildCount=0
baseBetaVersion=15.9.1 baseBetaVersion=15.9.2

View File

@@ -21,8 +21,8 @@ android {
dependencies { dependencies {
api fileTree(dir: 'libs', include: ['*.jar']) api fileTree(dir: 'libs', include: ['*.jar'])
api 'cc.winboll.studio:libapputils:15.8.2' api 'cc.winboll.studio:libapputils:15.8.4'
api 'cc.winboll.studio:libappbase:15.8.2' api 'cc.winboll.studio:libappbase:15.8.4'
// 吐司类库 // 吐司类库
api 'com.github.getActivity:ToastUtils:10.5' api 'com.github.getActivity:ToastUtils:10.5'

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Thu Jun 19 20:42:26 HKT 2025 #Sat Jun 28 12:59:30 HKT 2025
stageCount=2 stageCount=3
libraryProject=libaes libraryProject=libaes
baseVersion=15.9 baseVersion=15.9
publishVersion=15.9.1 publishVersion=15.9.2
buildCount=0 buildCount=0
baseBetaVersion=15.9.2 baseBetaVersion=15.9.3

View File

@@ -107,7 +107,7 @@ public class AboutView extends LinearLayout {
mszAppDescription = mAPPInfo.getAppDescription(); mszAppDescription = mAPPInfo.getAppDescription();
mnAppIcon = mAPPInfo.getAppIcon(); mnAppIcon = mAPPInfo.getAppIcon();
mszWinBoLLServerHost = GlobalApplication.isDebuging() ? "https://dev.winboll.cc": "https://www.winboll.cc"; mszWinBoLLServerHost = GlobalApplication.isDebuging() ? "https://yun-preivew.winboll.cc": "https://yun.winboll.cc";
try { try {
mszAppVersionName = mContext.getPackageManager().getPackageInfo(mContext.getPackageName(), 0).versionName; mszAppVersionName = mContext.getPackageManager().getPackageInfo(mContext.getPackageName(), 0).versionName;

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Thu Jul 17 11:24:17 HKT 2025 #Thu Jul 17 11:39:14 HKT 2025
stageCount=1 stageCount=2
libraryProject=libappbase libraryProject=libappbase
baseVersion=15.9 baseVersion=15.9
publishVersion=15.9.0 publishVersion=15.9.1
buildCount=0 buildCount=0
baseBetaVersion=15.9.1 baseBetaVersion=15.9.2

View File

@@ -1,5 +1,7 @@
## TimpStamp ## TimpStamp
## 时间戳工具集
#### 介绍
时间戳工具集。常驻工具栏快捷拷贝一份时间戳到剪贴板的工具。
## 使用要点: ## 使用要点:
1。常驻通知栏按钮的正常使用 1。常驻通知栏按钮的正常使用

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Wed May 07 15:07:02 HKT 2025 #Mon Jul 28 11:36:51 HKT 2025
stageCount=2 stageCount=4
libraryProject= libraryProject=
baseVersion=15.1 baseVersion=15.1
publishVersion=15.1.1 publishVersion=15.1.3
buildCount=0 buildCount=0
baseBetaVersion=15.1.2 baseBetaVersion=15.1.4

View File

@@ -3,6 +3,9 @@
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
package="cc.winboll.studio.timestamp"> package="cc.winboll.studio.timestamp">
<!-- 开机启动 -->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<!-- 运行前台服务 --> <!-- 运行前台服务 -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/> <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
@@ -45,6 +48,20 @@
<service android:name=".AssistantService"/> <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> </application>
</manifest> </manifest>

View File

@@ -5,6 +5,7 @@ import android.view.View;
import android.widget.EditText; import android.widget.EditText;
import android.widget.Switch; import android.widget.Switch;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar; import androidx.appcompat.widget.Toolbar;
import cc.winboll.studio.libappbase.LogUtils; 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.MainService;
import cc.winboll.studio.timestamp.R; import cc.winboll.studio.timestamp.R;
import cc.winboll.studio.timestamp.utils.AppConfigsUtil; 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 com.hjq.toast.ToastUtils;
import java.time.Instant; import java.time.Instant;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@@ -97,4 +100,22 @@ public class MainActivity extends AppCompatActivity {
} }
return false; 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();
}
} }

View File

@@ -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!");
}
}
}

View File

@@ -131,18 +131,12 @@ public class NotificationHelper {
service.startForeground(ID_MSG_SERVICE, mForegroundNotification); service.startForeground(ID_MSG_SERVICE, mForegroundNotification);
// 播放默认短信铃声 TimeStampUtil.getInstance(service).playNotifyMusic(service);
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);
} }
// public void sendSMSNotification(Context context, MessageNotificationBean messageNotificationBean) { // public void sendSMSNotification(Context context, MessageNotificationBean messageNotificationBean) {
// NotificationManager notificationManager = (NotificationManager) context.getSystemService( // NotificationManager notificationManager = (NotificationManager) context.getSystemService(
// Context.NOTIFICATION_SERVICE); // Context.NOTIFICATION_SERVICE);

View File

@@ -6,6 +6,8 @@ package cc.winboll.studio.timestamp.utils;
* @Describe TimeStampUtil * @Describe TimeStampUtil
*/ */
import android.content.Context; import android.content.Context;
import android.net.Uri;
import cc.winboll.studio.timestamp.R;
import java.time.Instant; import java.time.Instant;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneId; import java.time.ZoneId;
@@ -55,4 +57,19 @@ public class TimeStampUtil {
String formattedDateTime = ldt.format(formatter); String formattedDateTime = ldt.format(formatter);
return formattedDateTime; 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);
}
} }

View File

@@ -1,6 +1,16 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout <LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" 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" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
@@ -119,26 +129,52 @@
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:orientation="vertical" android:orientation="horizontal"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="wrap_content">
android:layout_weight="1.0"
android:gravity="center_vertical|center_horizontal"> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="当前截取的时间戳为:"/>
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:orientation="vertical" android:orientation="vertical"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="wrap_content"
android:layout_weight="1.0"> android:gravity="center_vertical|center_horizontal">
<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 <cc.winboll.studio.libappbase.LogView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="200dp"
android:id="@+id/logview"/> android:id="@+id/logview"/>
</LinearLayout> </LinearLayout>
</LinearLayout>