From 986922c1fa9f9f0371a6eb61ebcc6cb188f12a7a Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Wed, 7 May 2025 02:57:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E5=BA=94=E7=94=A8=E5=86=85=E9=93=83=E5=A3=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- timestamp/build.properties | 4 +- .../timestamp/utils/AudioPlayerMP3Util.java | 71 ++++++++++++++++++ ...layerUtil.java => AudioPlayerUriUtil.java} | 2 +- .../timestamp/utils/NotificationHelper.java | 8 +- timestamp/src/main/res/raw/diweiyi.mp3 | Bin 0 -> 32772 bytes 5 files changed, 81 insertions(+), 4 deletions(-) create mode 100644 timestamp/src/main/java/cc/winboll/studio/timestamp/utils/AudioPlayerMP3Util.java rename timestamp/src/main/java/cc/winboll/studio/timestamp/utils/{AudioPlayerUtil.java => AudioPlayerUriUtil.java} (98%) create mode 100644 timestamp/src/main/res/raw/diweiyi.mp3 diff --git a/timestamp/build.properties b/timestamp/build.properties index dfaa948..f97d5d4 100644 --- a/timestamp/build.properties +++ b/timestamp/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Tue May 06 18:34:42 GMT 2025 +#Tue May 06 18:56:20 GMT 2025 stageCount=7 libraryProject= baseVersion=15.0 publishVersion=15.0.6 -buildCount=7 +buildCount=9 baseBetaVersion=15.0.7 diff --git a/timestamp/src/main/java/cc/winboll/studio/timestamp/utils/AudioPlayerMP3Util.java b/timestamp/src/main/java/cc/winboll/studio/timestamp/utils/AudioPlayerMP3Util.java new file mode 100644 index 0000000..47c541e --- /dev/null +++ b/timestamp/src/main/java/cc/winboll/studio/timestamp/utils/AudioPlayerMP3Util.java @@ -0,0 +1,71 @@ +package cc.winboll.studio.timestamp.utils; + +/** + * @Author ZhanGSKen + * @Date 2025/05/07 02:38 + * @Describe AudioPlayer + */ +import android.content.Context; +import android.media.MediaPlayer; +import android.net.Uri; +import android.util.Log; + +public class AudioPlayerMP3Util { + + public static final String TAG = "AudioPlayer"; + + private static MediaPlayer mediaPlayer; + + /** + * 播放指定的 MP3 文件 + * + * @param context 上下文 + * @param mp3FilePath MP3 文件的路径,例如:"/storage/emulated/0/Music/song.mp3" + */ + public static void playMp3(Context context, String mp3FilePath) { + if (mediaPlayer != null && mediaPlayer.isPlaying()) { + mediaPlayer.stop(); + mediaPlayer.release(); + mediaPlayer = null; + } + + try { + mediaPlayer = new MediaPlayer(); + Uri uri = Uri.parse(mp3FilePath); + mediaPlayer.setDataSource(context, uri); + mediaPlayer.prepare(); + mediaPlayer.start(); + + mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { + @Override + public void onCompletion(MediaPlayer mp) { + releaseMediaPlayer(); + } + }); + + mediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() { + @Override + public boolean onError(MediaPlayer mp, int what, int extra) { + Log.e("AudioPlayer", "播放音频时出错: what=" + what + ", extra=" + extra); + releaseMediaPlayer(); + return true; + } + }); + } catch (Exception e) { + e.printStackTrace(); + releaseMediaPlayer(); + } + } + + /** + * 释放 MediaPlayer 资源 + */ + private static void releaseMediaPlayer() { + if (mediaPlayer != null) { + mediaPlayer.stop(); + mediaPlayer.release(); + mediaPlayer = null; + } + } +} + diff --git a/timestamp/src/main/java/cc/winboll/studio/timestamp/utils/AudioPlayerUtil.java b/timestamp/src/main/java/cc/winboll/studio/timestamp/utils/AudioPlayerUriUtil.java similarity index 98% rename from timestamp/src/main/java/cc/winboll/studio/timestamp/utils/AudioPlayerUtil.java rename to timestamp/src/main/java/cc/winboll/studio/timestamp/utils/AudioPlayerUriUtil.java index 29f3aba..c46b06b 100644 --- a/timestamp/src/main/java/cc/winboll/studio/timestamp/utils/AudioPlayerUtil.java +++ b/timestamp/src/main/java/cc/winboll/studio/timestamp/utils/AudioPlayerUriUtil.java @@ -10,7 +10,7 @@ import android.media.MediaPlayer; import android.net.Uri; import android.util.Log; -public class AudioPlayerUtil { +public class AudioPlayerUriUtil { public static final String TAG = "AudioPlayerUtil"; diff --git a/timestamp/src/main/java/cc/winboll/studio/timestamp/utils/NotificationHelper.java b/timestamp/src/main/java/cc/winboll/studio/timestamp/utils/NotificationHelper.java index f71653c..de1a8a0 100644 --- a/timestamp/src/main/java/cc/winboll/studio/timestamp/utils/NotificationHelper.java +++ b/timestamp/src/main/java/cc/winboll/studio/timestamp/utils/NotificationHelper.java @@ -128,8 +128,14 @@ public class NotificationHelper { service.startForeground(ID_MSG_SERVICE, mForegroundNotification); + // 播放默认短信铃声 Uri defaultSmsRingtoneUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); - AudioPlayerUtil.playAudio(service, defaultSmsRingtoneUri); + 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) { diff --git a/timestamp/src/main/res/raw/diweiyi.mp3 b/timestamp/src/main/res/raw/diweiyi.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..86653fad54f47f9e423742bdb85b39319ea60b0a GIT binary patch literal 32772 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%0A-0yQ4StN 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