Browse Source

完善视频播放器内核库

yangchong 3 years ago
parent
commit
f8633ee3b8
1 changed files with 29 additions and 36 deletions
  1. 29 36
      MusicPlayer/src/main/java/com/yc/music/impl/PlayAudioImpl.java

+ 29 - 36
MusicPlayer/src/main/java/com/yc/music/impl/PlayAudioImpl.java

@@ -36,14 +36,6 @@ public class PlayAudioImpl implements InterPlayAudio {
      * 正在播放的歌曲的序号
      */
     private int mPlayingPosition = -1;
-    /**
-     * 正在播放的歌曲[本地|网络]
-     */
-    private AudioBean mPlayingMusic;
-    /**
-     * 音频list集合
-     */
-    private List<AudioBean> audioMusics;
     /**
      * 播放器
      */
@@ -90,20 +82,19 @@ public class PlayAudioImpl implements InterPlayAudio {
 
     @Override
     public void play(int position) {
-        audioMusics = BaseAppHelper.get().getMusicList();
-        if (audioMusics.isEmpty()) {
+        if (getAudioMusics().isEmpty()) {
             return;
         }
 
         if (position < 0) {
-            position = audioMusics.size() - 1;
-        } else if (position >= audioMusics.size()) {
+            position = getAudioMusics().size() - 1;
+        } else if (position >= getAudioMusics().size()) {
             //如果是最后一首音乐,则播放时直接播放第一首音乐
             position = 0;
         }
 
         mPlayingPosition = position;
-        AudioBean music = audioMusics.get(mPlayingPosition);
+        AudioBean music = getPlayingMusic();
         String id = music.getId();
         VideoLogUtils.e("PlayService"+"----id----"+ id);
         //保存当前播放的musicId,下次进来可以记录状态
@@ -117,7 +108,7 @@ public class PlayAudioImpl implements InterPlayAudio {
         if (!isPreparing() && !isPausing()) {
             return;
         }
-        if(mPlayingMusic==null){
+        if(getAudioMusics()==null){
             return;
         }
         if(mAudioFocusManager.requestAudioFocus()){
@@ -131,7 +122,7 @@ public class PlayAudioImpl implements InterPlayAudio {
                     onPlayerEventListeners.get(i).onPlayerStart();
                 }
                 //当点击播放按钮时(播放详情页面或者底部控制栏),同步通知栏中播放按钮状态
-                NotificationHelper.get().showPlay(mPlayingMusic);
+                NotificationHelper.get().showPlay(getPlayingMusic());
                 //注册监听来电/耳机拔出时暂停播放广播
                 if(!mReceiverTag){
                     mReceiverTag = true;
@@ -144,12 +135,11 @@ public class PlayAudioImpl implements InterPlayAudio {
 
     @Override
     public void play(AudioBean music) {
-        mPlayingMusic = music;
         createMediaPlayer();
         try {
             mPlayer.reset();
             //把音频路径传给播放器
-            mPlayer.setDataSource(mPlayingMusic.getPath());
+            mPlayer.setDataSource(music.getPath());
             //准备
             mPlayer.prepareAsync();
             //设置状态为准备中
@@ -164,13 +154,13 @@ public class PlayAudioImpl implements InterPlayAudio {
             //当播放的时候,需要刷新界面信息
             List<OnPlayerEventListener> onPlayerEventListeners = BaseAppHelper.get().getOnPlayerEventListeners();
             for (int i=0 ; i<onPlayerEventListeners.size() ; i++){
-                onPlayerEventListeners.get(i).onChange(mPlayingMusic);
+                onPlayerEventListeners.get(i).onChange(music);
             }
             //更新通知栏
-            NotificationHelper.get().showPlay(mPlayingMusic);
+            NotificationHelper.get().showPlay(music);
 
             //更新
-            mMediaSessionManager.updateMetaData(mPlayingMusic);
+            mMediaSessionManager.updateMetaData(music);
             mMediaSessionManager.updatePlaybackState();
         } catch (IOException e) {
             e.printStackTrace();
@@ -230,7 +220,7 @@ public class PlayAudioImpl implements InterPlayAudio {
                 onPlayerEventListeners.get(i).onPlayerPause();
             }
             //当点击暂停按钮时(播放详情页面或者底部控制栏),同步通知栏中暂停按钮状态
-            NotificationHelper.get().showPause(mPlayingMusic);
+            NotificationHelper.get().showPause(getPlayingMusic());
             //注销监听来电/耳机拔出时暂停播放广播
             //判断广播是否注册
             if (mReceiverTag) {
@@ -259,11 +249,11 @@ public class PlayAudioImpl implements InterPlayAudio {
     @Override
     public void next() {
         //建议都添加这个判断
-        if (audioMusics.isEmpty()) {
+        if (getAudioMusics().isEmpty()) {
             return;
         }
         int playMode = VideoSpUtils.getInstance(MusicConstants.SP_NAME).getInt(MusicConstants.PLAY_MODE, 0);
-        int size = audioMusics.size();
+        int size = getAudioMusics().size();
         PlayModeEnum mode = PlayModeEnum.valueOf(playMode);
         switch (mode) {
             //随机
@@ -278,7 +268,7 @@ public class PlayAudioImpl implements InterPlayAudio {
             //顺序播放并且循环
             case LOOP:
             default:
-                if (mPlayingPosition != size - 1) {
+                if (isHaveNext()){
                     // 如果不是最后一首,则还有下一首
                     mPlayingPosition++;
                 } else {
@@ -294,11 +284,11 @@ public class PlayAudioImpl implements InterPlayAudio {
     @Override
     public void prev() {
         //建议都添加这个判断
-        if (audioMusics.isEmpty()) {
+        if (getAudioMusics().isEmpty()) {
             return;
         }
         int playMode = VideoSpUtils.getInstance(MusicConstants.SP_NAME).getInt(MusicConstants.PLAY_MODE, 0);
-        int size = audioMusics.size();
+        int size = getAudioMusics().size();
         PlayModeEnum mode = PlayModeEnum.valueOf(playMode);
         switch (mode) {
             //随机
@@ -313,7 +303,7 @@ public class PlayAudioImpl implements InterPlayAudio {
             //顺序播放并且循环
             case LOOP:
             default:
-                if(mPlayingPosition != 0){
+                if (isHavePre()){
                     // 如果不是第一首,则还有上一首
                     mPlayingPosition--;
                 } else {
@@ -327,6 +317,7 @@ public class PlayAudioImpl implements InterPlayAudio {
 
     @Override
     public void updatePlayProgress() {
+        //更新
         updatePlayProgressShow();
     }
 
@@ -470,7 +461,7 @@ public class PlayAudioImpl implements InterPlayAudio {
      * 获取正在播放的歌曲[本地|网络]
      */
     public AudioBean getPlayingMusic() {
-        return mPlayingMusic;
+        return getAudioMusics().get(mPlayingPosition);
     }
 
 
@@ -491,7 +482,7 @@ public class PlayAudioImpl implements InterPlayAudio {
      * @return          true表示有
      */
     public boolean isHavePre() {
-        if(audioMusics !=null && audioMusics.size()>0){
+        if(getAudioMusics() !=null && getAudioMusics().size()>0){
             if(mPlayingPosition != 0){
                 // 如果不是第一首,则还有上一首
                 return true;
@@ -508,8 +499,8 @@ public class PlayAudioImpl implements InterPlayAudio {
      * @return          true表示有
      */
     public boolean isHaveNext() {
-        if(audioMusics !=null && audioMusics.size()>0){
-            if (mPlayingPosition != audioMusics.size() - 1) {
+        if(getAudioMusics() !=null && getAudioMusics().size()>0){
+            if (mPlayingPosition != getAudioMusics().size() - 1) {
                 // 如果不是最后一首,则还有下一首
                 return true;
             } else {
@@ -521,7 +512,9 @@ public class PlayAudioImpl implements InterPlayAudio {
         }
     }
 
-
+    private List<AudioBean> getAudioMusics(){
+        return BaseAppHelper.get().getMusicList();
+    }
 
     /**------------------------------------------------------------------------------------------*/
 
@@ -572,11 +565,11 @@ public class PlayAudioImpl implements InterPlayAudio {
     public void updatePlayingPosition() {
         int position = 0;
         long id = VideoSpUtils.getInstance(MusicConstants.SP_NAME).getLong(MusicConstants.MUSIC_ID,-1);
-        if(audioMusics.isEmpty()){
+        if(getAudioMusics().isEmpty()){
             return;
         }
-        for (int i = 0; i < audioMusics.size(); i++) {
-            String musicId = audioMusics.get(i).getId();
+        for (int i = 0; i < getAudioMusics().size(); i++) {
+            String musicId = getAudioMusics().get(i).getId();
             VideoLogUtils.e("PlayService"+"----musicId----"+ musicId);
             if (Long.parseLong(musicId) == id) {
                 position = i;
@@ -584,7 +577,7 @@ public class PlayAudioImpl implements InterPlayAudio {
             }
         }
         mPlayingPosition = position;
-        long musicId = Long.parseLong(audioMusics.get(mPlayingPosition).getId());
+        long musicId = Long.parseLong(getAudioMusics().get(mPlayingPosition).getId());
         VideoSpUtils.getInstance(MusicConstants.SP_NAME).put(MusicConstants.MUSIC_ID,musicId);
     }