From bfd1ad288092a4b4a010ea230466f5e86a4e3de4 Mon Sep 17 00:00:00 2001 From: lmw <125975490@qq.com> Date: 星期二, 24 十二月 2024 10:09:43 +0800 Subject: [PATCH] fix bug --- app/src/main/java/com/sinata/xqmuse/utils/AudioUtils.java | 123 ++++++++++++++++++---------------------- 1 files changed, 55 insertions(+), 68 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 8dd777c..042d34c 100644 --- a/app/src/main/java/com/sinata/xqmuse/utils/AudioUtils.java +++ b/app/src/main/java/com/sinata/xqmuse/utils/AudioUtils.java @@ -11,7 +11,12 @@ import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.MediaItem; +import com.google.android.exoplayer2.PlaybackException; +import com.google.android.exoplayer2.Player; +import com.google.android.exoplayer2.SimpleExoPlayer; +import com.google.android.exoplayer2.source.MediaSource; import com.sinata.xqmuse.utils.exo.ExoMediaPlayer; +import com.sinata.xqmuse.utils.exo.ExoMediaPlayerFactory; import java.io.File; import java.io.IOException; @@ -32,7 +37,7 @@ public static final int MAX_LENGTH = 1000 * 600;// 最大录音时长十分钟,实际行程设置为5分钟上传一次 private OnAudioStatusUpdateListener audioStatusUpdateListener; - private MediaPlayer mMediaPlayer; + private SimpleExoPlayer mMediaPlayer; private float volume = 0.5f; //播放音量 @@ -231,34 +236,34 @@ if (mMediaPlayer != null) { stopPlayMusic(false); } - mMediaPlayer = new MediaPlayer(); - mMediaPlayer.setVolume(volume,volume); + mMediaPlayer = new SimpleExoPlayer.Builder(context).build(); + mMediaPlayer.setVolume(volume); isPause = false; try { Log.e("mmp", "开始播放 path:" + filePath); - - mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mMediaPlayer.setDataSource(context, Uri.parse(filePath)); - mMediaPlayer.prepareAsync(); - mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { + MediaItem mediaItem = MediaItem.fromUri(Uri.parse(filePath)); + mMediaPlayer.setMediaItem(mediaItem); + mMediaPlayer.prepare(); + mMediaPlayer.play(); + mMediaPlayer.addListener(new Player.Listener(){ @Override - public void onPrepared(MediaPlayer mp) { - // 装载完毕回调 - mMediaPlayer.start(); - if (audioStatusUpdateListener != null){ - audioStatusUpdateListener.onGetDuration(mMediaPlayer.getDuration()); - audioStatusUpdateListener.onStartPlay(); - } + public void onPlayerError(PlaybackException error) { + Log.e("mmp","播放错误:"+error.getMessage()); } - - }); - mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override - public void onCompletion(MediaPlayer mp) { - stopPlayMusic(true); -// baseEvent.setMsg(filePath); -// EventBus.getDefault().post(baseEvent); + public void onPlayerStateChanged(boolean playWhenReady, int playbackState) { + if (playbackState == Player.STATE_BUFFERING) + Log.e("mmp","缓冲中...STATE_BUFFERING"); + else if (playbackState == Player.STATE_READY){ + Log.e("mmp","缓冲完成,音频准备就绪:STATE_READY"); + + } else if (playbackState == Player.STATE_ENDED){ + Log.e("mmp","播放完成:STATE_ENDED"); + stopPlayMusic(true); + } else if (playbackState == Player.STATE_IDLE){ + Log.e("mmp","播放器空闲:STATE_IDLE"); + } } }); } catch (Exception e) { @@ -276,34 +281,16 @@ if (mMediaPlayer != null) { stopPlayMusic(false); } - mMediaPlayer = new MediaPlayer(); - mMediaPlayer.setVolume(volume,volume); + mMediaPlayer = new SimpleExoPlayer.Builder(context).build(); + mMediaPlayer.setVolume(volume); isPause = false; 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.onStartPlay(); - } - }); - 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(); - } - } - }); - + MediaItem mediaItem = MediaItem.fromUri(Uri.parse(filePath)); + mMediaPlayer.setMediaItem(mediaItem); + mMediaPlayer.prepare(); + mMediaPlayer.setRepeatMode(Player.REPEAT_MODE_ONE); + mMediaPlayer.play(); } catch (Exception e) { e.printStackTrace(); } @@ -318,7 +305,7 @@ public void resume(){ if (mMediaPlayer != null) { - mMediaPlayer.start(); + mMediaPlayer.play(); isPause = false; } } @@ -332,11 +319,11 @@ public void setVolume(float volume){ this.volume = volume; if (mMediaPlayer!=null){ - mMediaPlayer.setVolume(volume,volume); + mMediaPlayer.setVolume(volume); } } - public int getCurrentPosition(){ + public long getCurrentPosition(){ if (mMediaPlayer!=null){ return mMediaPlayer.getCurrentPosition(); } @@ -369,23 +356,23 @@ * @param filePath * @return */ - public int getMusicTime(Context context, String filePath) { - if (mMediaPlayer != null) { - stopPlayMusic(false); - } - mMediaPlayer = new MediaPlayer(); - try { - mMediaPlayer.setDataSource(context, Uri.parse(filePath)); - mMediaPlayer.prepare(); - int duration = mMediaPlayer.getDuration(); - if (0 != duration) { - mMediaPlayer.release(); - return duration / 1000; - } - } catch (IOException e) { - e.printStackTrace(); - } - return 0; - } +// public int getMusicTime(Context context, String filePath) { +// if (mMediaPlayer != null) { +// stopPlayMusic(false); +// } +// mMediaPlayer = new MediaPlayer(); +// try { +// mMediaPlayer.setDataSource(context, Uri.parse(filePath)); +// mMediaPlayer.prepare(); +// int duration = mMediaPlayer.getDuration(); +// if (0 != duration) { +// mMediaPlayer.release(); +// return duration / 1000; +// } +// } catch (IOException e) { +// e.printStackTrace(); +// } +// return 0; +// } } \ No newline at end of file -- Gitblit v1.7.1