From d1a9e3312387b6c47e6186af506787a8a66369d1 Mon Sep 17 00:00:00 2001 From: lmw <125975490@qq.com> Date: 星期六, 09 十一月 2024 18:40:36 +0800 Subject: [PATCH] fix --- app/src/main/java/com/sinata/xqmuse/utils/AudioUtils.java | 80 +++++++++++++++++++++++++++++++++++++--- 1 files changed, 74 insertions(+), 6 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 53ed751..0da26f9 100644 --- a/app/src/main/java/com/sinata/xqmuse/utils/AudioUtils.java +++ b/app/src/main/java/com/sinata/xqmuse/utils/AudioUtils.java @@ -27,6 +27,8 @@ private float volume = 0.5f; //播放音量 + private String audio = "";//音源 + /** * 文件存储默认sdcard/record */ @@ -204,10 +206,60 @@ public void onStartPlay(); public void onFinishPlay(); + + public void onGetDuration(int duration); } - //开始播放录音 + + /** + * 开始播放音频 + * @param context + * @param filePath + */ public void startPlayMusic(Context context, String filePath) { + if (mMediaPlayer != null) { + stopPlayMusic(); + } + mMediaPlayer = new MediaPlayer(); + mMediaPlayer.setVolume(volume,volume); + try { + Log.e("mmp", "path:" + filePath); + mMediaPlayer.setDataSource(context, Uri.parse(filePath)); + mMediaPlayer.prepareAsync(); + mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { + @Override + public void onPrepared(MediaPlayer mp) { + // 装载完毕回调 + mMediaPlayer.start(); + if (audioStatusUpdateListener != null){ + audioStatusUpdateListener.onGetDuration(mMediaPlayer.getDuration()); + audioStatusUpdateListener.onStartPlay(); + } + } + + + }); + mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { + @Override + public void onCompletion(MediaPlayer mp) { + stopPlayMusic(); +// BaseEvent baseEvent = new BaseEvent(BaseEvent.SEND_AODIO_PLAY_OVER); +// baseEvent.setMsg(filePath); +// EventBus.getDefault().post(baseEvent); + } + }); + } catch (Exception e) { + e.printStackTrace(); + } + } + + + /** + * 循环播放音频 + * @param context + * @param filePath + */ + public void loopPlayMusic(Context context, String filePath) { if (mMediaPlayer != null) { stopPlayMusic(); } @@ -229,15 +281,24 @@ mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { - stopPlayMusic(); -// BaseEvent baseEvent = new BaseEvent(BaseEvent.SEND_AODIO_PLAY_OVER); -// baseEvent.setMsg(filePath); -// EventBus.getDefault().post(baseEvent); + mMediaPlayer.start(); } }); } catch (Exception e) { e.printStackTrace(); + } + } + + public void pause(){ + if (mMediaPlayer != null) { + mMediaPlayer.pause(); + } + } + + public void resume(){ + if (mMediaPlayer != null) { + mMediaPlayer.start(); } } @@ -248,6 +309,13 @@ } } + public int getCurrentPosition(){ + if (mMediaPlayer!=null){ + return mMediaPlayer.getCurrentPosition(); + } + return 0; + } + //结束录音播放 public void stopPlayMusic() { if (mMediaPlayer == null) @@ -255,9 +323,9 @@ try { mMediaPlayer.stop(); mMediaPlayer.release(); + mMediaPlayer = null; if (audioStatusUpdateListener != null) audioStatusUpdateListener.onFinishPlay(); - mMediaPlayer = null; } catch (IllegalStateException e) { e.printStackTrace(); } -- Gitblit v1.7.1