浏览代码

完善视频播放器内核库

yangchong 3 年之前
父节点
当前提交
5936ca37e0

+ 1 - 1
Demo/src/main/java/com/yc/ycvideoplayer/MainActivity.java

@@ -230,7 +230,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
                 public void run() {
                     bindService();
                 }
-            },500);
+            },1000);
         }
     }
 

+ 1 - 4
Demo/src/main/java/com/yc/ycvideoplayer/music/MusicPlayerActivity.java

@@ -193,10 +193,7 @@ public class MusicPlayerActivity extends AppCompatActivity implements View.OnCli
      * 同时还要同步播放详情页面mPlayFragment的视图
      */
     public void initPlayServiceListener() {
-        if (BaseAppHelper.get().getMusicService() == null) {
-            return;
-        }
-        BaseAppHelper.get().getMusicService().setOnPlayEventListener(new OnPlayerEventListener() {
+        BaseAppHelper.get().setOnPlayEventListener(new OnPlayerEventListener() {
             /**
              * 切换歌曲
              * 主要是切换歌曲的时候需要及时刷新界面信息

+ 0 - 7
MusicPlayer/src/main/java/com/yc/music/delegate/PlayAudioDelegate.java

@@ -137,13 +137,6 @@ public class PlayAudioDelegate implements InterPlayAudio {
         return false;
     }
 
-    @Override
-    public void setOnPlayEventListener(OnPlayerEventListener listener) {
-        if (null != this.mDelegate) {
-            this.mDelegate.setOnPlayEventListener(listener);
-        }
-    }
-
     @Override
     public AudioBean getPlayingMusic() {
         if (null != this.mDelegate) {

+ 21 - 23
MusicPlayer/src/main/java/com/yc/music/impl/PlayAudioImpl.java

@@ -32,10 +32,6 @@ public class PlayAudioImpl implements InterPlayAudio {
 
     private Context context;
     private PlayAudioService service;
-    /**
-     * 播放进度监听器
-     */
-    private OnPlayerEventListener mListener;
     /**
      * 正在播放的歌曲的序号
      */
@@ -130,8 +126,9 @@ public class PlayAudioImpl implements InterPlayAudio {
                 mPlayState = MusicPlayAction.STATE_PLAYING;
                 //开始发送消息,执行进度条进度更新
                 QuitTimerHelper.getInstance().getHandler().sendEmptyMessage(UPDATE_PLAY_PROGRESS_SHOW);
-                if (mListener != null) {
-                    mListener.onPlayerStart();
+                List<OnPlayerEventListener> onPlayerEventListeners = BaseAppHelper.get().getOnPlayerEventListeners();
+                for (int i=0 ; i<onPlayerEventListeners.size() ; i++){
+                    onPlayerEventListeners.get(i).onPlayerStart();
                 }
                 //当点击播放按钮时(播放详情页面或者底部控制栏),同步通知栏中播放按钮状态
                 NotificationHelper.get().showPlay(mPlayingMusic);
@@ -165,8 +162,9 @@ public class PlayAudioImpl implements InterPlayAudio {
             mPlayer.setOnErrorListener(mOnErrorListener);
             mPlayer.setOnInfoListener(mOnInfoListener);
             //当播放的时候,需要刷新界面信息
-            if (mListener != null) {
-                mListener.onChange(mPlayingMusic);
+            List<OnPlayerEventListener> onPlayerEventListeners = BaseAppHelper.get().getOnPlayerEventListeners();
+            for (int i=0 ; i<onPlayerEventListeners.size() ; i++){
+                onPlayerEventListeners.get(i).onChange(mPlayingMusic);
             }
             //更新通知栏
             NotificationHelper.get().showPlay(mPlayingMusic);
@@ -227,8 +225,9 @@ public class PlayAudioImpl implements InterPlayAudio {
             //移除,注意一定要移除,否则一直走更新方法
             QuitTimerHelper.getInstance().getHandler().removeMessages(UPDATE_PLAY_PROGRESS_SHOW);
             //监听
-            if (mListener != null) {
-                mListener.onPlayerPause();
+            List<OnPlayerEventListener> onPlayerEventListeners = BaseAppHelper.get().getOnPlayerEventListeners();
+            for (int i=0 ; i<onPlayerEventListeners.size() ; i++){
+                onPlayerEventListeners.get(i).onPlayerPause();
             }
             //当点击暂停按钮时(播放详情页面或者底部控制栏),同步通知栏中暂停按钮状态
             NotificationHelper.get().showPause(mPlayingMusic);
@@ -249,8 +248,9 @@ public class PlayAudioImpl implements InterPlayAudio {
         //只有当播放或者暂停的时候才允许拖动bar
         if (isPlaying() || isPausing()) {
             mPlayer.seekTo(progress);
-            if(mListener!=null){
-                mListener.onUpdateProgress(progress);
+            List<OnPlayerEventListener> onPlayerEventListeners = BaseAppHelper.get().getOnPlayerEventListeners();
+            for (int i=0 ; i<onPlayerEventListeners.size() ; i++){
+                onPlayerEventListeners.get(i).onUpdateProgress(progress);
             }
             mMediaSessionManager.updatePlaybackState();
         }
@@ -330,12 +330,6 @@ public class PlayAudioImpl implements InterPlayAudio {
         updatePlayProgressShow();
     }
 
-    @Override
-    public void setOnPlayEventListener(OnPlayerEventListener listener) {
-        mListener = listener;
-    }
-
-
     /**
      * 创建MediaPlayer对象
      */
@@ -374,9 +368,10 @@ public class PlayAudioImpl implements InterPlayAudio {
     private MediaPlayer.OnBufferingUpdateListener mOnBufferingUpdateListener = new MediaPlayer.OnBufferingUpdateListener() {
         @Override
         public void onBufferingUpdate(MediaPlayer mp, int percent) {
-            if (mListener != null) {
-                // 缓冲百分比
-                mListener.onBufferingUpdate(percent);
+            // 缓冲百分比
+            List<OnPlayerEventListener> onPlayerEventListeners = BaseAppHelper.get().getOnPlayerEventListeners();
+            for (int i=0 ; i<onPlayerEventListeners.size() ; i++){
+                onPlayerEventListeners.get(i).onBufferingUpdate(percent);
             }
         }
     };
@@ -449,9 +444,12 @@ public class PlayAudioImpl implements InterPlayAudio {
      * 更新播放进度的显示,时间的显示
      */
     private void updatePlayProgressShow() {
-        if (isPlaying() && mListener != null) {
+        if (isPlaying()) {
             int currentPosition =  mPlayer.getCurrentPosition();
-            mListener.onUpdateProgress(currentPosition);
+            List<OnPlayerEventListener> onPlayerEventListeners = BaseAppHelper.get().getOnPlayerEventListeners();
+            for (int i=0 ; i<onPlayerEventListeners.size() ; i++){
+                onPlayerEventListeners.get(i).onUpdateProgress(currentPosition);
+            }
         }
         VideoLogUtils.e("updatePlayProgressShow");
         // 每30毫秒更新一下显示的内容,注意这里时间不要太短,因为这个是一个循环

+ 0 - 2
MusicPlayer/src/main/java/com/yc/music/inter/InterPlayAudio.java

@@ -67,8 +67,6 @@ public interface InterPlayAudio {
 
     boolean isPausing();
 
-    void setOnPlayEventListener(OnPlayerEventListener listener);
-
     AudioBean getPlayingMusic();
 
     int getPlayingPosition();

+ 6 - 22
MusicPlayer/src/main/java/com/yc/music/service/PlayAudioService.java

@@ -20,6 +20,8 @@ import com.yc.music.tool.BaseAppHelper;
 import com.yc.music.tool.QuitTimerHelper;
 import com.yc.videotool.VideoLogUtils;
 
+import java.util.List;
+
 
 /**
  * <pre>
@@ -33,10 +35,7 @@ import com.yc.videotool.VideoLogUtils;
 public class PlayAudioService extends AbsAudioService {
 
     private InterPlayAudio mDelegate;
-    /**
-     * 播放进度监听器
-     */
-    private OnPlayerEventListener mListener;
+
     private OnScreenChangeListener mOnScreenChangeListener;
     /**
      * 更新播放进度的显示,时间的显示
@@ -163,8 +162,9 @@ public class PlayAudioService extends AbsAudioService {
                 new QuitTimerHelper.EventCallback<Long>() {
             @Override
             public void onEvent(Long aLong) {
-                if (mListener != null) {
-                    mListener.onTimer(aLong);
+                List<OnPlayerEventListener> onPlayerEventListeners = BaseAppHelper.get().getOnPlayerEventListeners();
+                for (int i=0 ; i<onPlayerEventListeners.size() ; i++){
+                    onPlayerEventListeners.get(i).onTimer(aLong);
                 }
             }
         });
@@ -292,22 +292,6 @@ public class PlayAudioService extends AbsAudioService {
         stopSelf();
     }
 
-    /**
-     * 获取播放进度监听器对象
-     * @return                  OnPlayerEventListener对象
-     */
-    public OnPlayerEventListener getOnPlayEventListener() {
-        return mListener;
-    }
-
-    /**
-     * 设置播放进度监听器
-     * @param listener          listener
-     */
-    public void setOnPlayEventListener(OnPlayerEventListener listener) {
-        mListener = listener;
-        mDelegate.setOnPlayEventListener(mListener);
-    }
 
     public void setOnScreenChangeListener(OnScreenChangeListener onScreenChangeListener) {
         this.mOnScreenChangeListener = onScreenChangeListener;

+ 25 - 0
MusicPlayer/src/main/java/com/yc/music/tool/BaseAppHelper.java

@@ -3,6 +3,7 @@ package com.yc.music.tool;
 import android.annotation.SuppressLint;
 import android.content.Context;
 
+import com.yc.music.inter.OnPlayerEventListener;
 import com.yc.music.model.AudioBean;
 import com.yc.music.service.PlayAudioService;
 
@@ -32,6 +33,10 @@ public class BaseAppHelper {
      * 全局上下文
      */
     private Context mContext;
+    /**
+     * 播放进度监听器
+     */
+    private final List<OnPlayerEventListener> mOnPlayerEventListeners = new ArrayList<>();
 
     private BaseAppHelper() {
         //这里可以做一些初始化的逻辑
@@ -103,4 +108,24 @@ public class BaseAppHelper {
     public Context getContext() {
         return mContext;
     }
+
+    /**
+     * 设置播放进度监听器
+     * @param listener          listener
+     */
+    public void setOnPlayEventListener(OnPlayerEventListener listener) {
+        mOnPlayerEventListeners.add(listener);
+    }
+
+    /**
+     * 设置播放进度监听器
+     * @param listener          listener
+     */
+    public void removeOnPlayEventListener(OnPlayerEventListener listener) {
+        mOnPlayerEventListeners.remove(listener);
+    }
+
+    public List<OnPlayerEventListener> getOnPlayerEventListeners() {
+        return mOnPlayerEventListeners;
+    }
 }

+ 2 - 0
VideoPlayer/src/main/java/com/yc/video/config/VideoPlayerConfig.java

@@ -27,6 +27,7 @@ import com.yc.video.tool.BaseToast;
 import com.yc.video.player.ProgressManager;
 import com.yc.video.surface.SurfaceFactory;
 import com.yc.video.surface.TextureViewFactory;
+import com.yc.videotool.VideoLogUtils;
 
 
 /**
@@ -247,6 +248,7 @@ public class VideoPlayerConfig {
         }
         mIsShowToast = builder.mIsShowToast;
         mShowToastTime = builder.mShowToastTime;
+        VideoLogUtils.setIsLog(mIsEnableLog);
     }