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