From 610a2aedd505bb4d8fb29f0bc6741ced74218bb0 Mon Sep 17 00:00:00 2001 From: lmw <125975490@qq.com> Date: 星期二, 12 十一月 2024 13:46:37 +0800 Subject: [PATCH] fix bugs --- app/src/main/java/com/sinata/xqmuse/utils/AudioUtils.java | 39 ++++++++++++++++++++++++++++++--------- 1 files changed, 30 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/sinata/xqmuse/utils/AudioUtils.java b/app/src/main/java/com/sinata/xqmuse/utils/AudioUtils.java index 0da26f9..f248846 100644 --- a/app/src/main/java/com/sinata/xqmuse/utils/AudioUtils.java +++ b/app/src/main/java/com/sinata/xqmuse/utils/AudioUtils.java @@ -29,6 +29,8 @@ private String audio = "";//音源 + private boolean isPause = false; //是否暂停,解决循环播放时资源文件prepare异步产生的暂停失败问题 + /** * 文件存储默认sdcard/record */ @@ -218,12 +220,13 @@ */ public void startPlayMusic(Context context, String filePath) { if (mMediaPlayer != null) { - stopPlayMusic(); + stopPlayMusic(false); } mMediaPlayer = new MediaPlayer(); mMediaPlayer.setVolume(volume,volume); + isPause = false; try { - Log.e("mmp", "path:" + filePath); + Log.e("mmp", "开始播放 path:" + filePath); mMediaPlayer.setDataSource(context, Uri.parse(filePath)); mMediaPlayer.prepareAsync(); mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @@ -242,7 +245,7 @@ mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { - stopPlayMusic(); + stopPlayMusic(true); // BaseEvent baseEvent = new BaseEvent(BaseEvent.SEND_AODIO_PLAY_OVER); // baseEvent.setMsg(filePath); // EventBus.getDefault().post(baseEvent); @@ -261,12 +264,13 @@ */ public void loopPlayMusic(Context context, String filePath) { if (mMediaPlayer != null) { - stopPlayMusic(); + stopPlayMusic(false); } mMediaPlayer = new MediaPlayer(); mMediaPlayer.setVolume(volume,volume); + isPause = false; try { - Log.e("mmp", "path:" + filePath); + Log.e("mmp", "循环播放 path:" + filePath); mMediaPlayer.setDataSource(context, Uri.parse(filePath)); mMediaPlayer.prepareAsync(); mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @@ -281,7 +285,12 @@ mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { + Log.e("mmp", "播放完成 从新循环 path:" + filePath); mMediaPlayer.start(); + if (isPause){ + Log.e("mmp", "循环播放异步暂停"); + mMediaPlayer.pause(); + } } }); @@ -293,12 +302,20 @@ public void pause(){ if (mMediaPlayer != null) { mMediaPlayer.pause(); + isPause = true; } } public void resume(){ if (mMediaPlayer != null) { mMediaPlayer.start(); + isPause = false; + } + } + + public void seekTo(int now){ + if (mMediaPlayer != null) { + mMediaPlayer.seekTo(now*1000); } } @@ -316,15 +333,19 @@ return 0; } - //结束录音播放 - public void stopPlayMusic() { + + /** + * 结束录音播放 + * @param needCallback true真实结束 才走结束回调,为了切换下一首而结束的 不调结束回调 + */ + public void stopPlayMusic(boolean needCallback) { if (mMediaPlayer == null) return; try { mMediaPlayer.stop(); mMediaPlayer.release(); mMediaPlayer = null; - if (audioStatusUpdateListener != null) + if (audioStatusUpdateListener != null&&needCallback) audioStatusUpdateListener.onFinishPlay(); } catch (IllegalStateException e) { e.printStackTrace(); @@ -340,7 +361,7 @@ */ public int getMusicTime(Context context, String filePath) { if (mMediaPlayer != null) { - stopPlayMusic(); + stopPlayMusic(false); } mMediaPlayer = new MediaPlayer(); try { -- Gitblit v1.7.1