Ver Fonte

修复音乐

zhaofuxin há 4 anos atrás
pai
commit
453e1c5b25

+ 4 - 1
app/src/main/java/com/jld/vod/audio/MusicControllerImp.java

@@ -61,6 +61,7 @@ public class MusicControllerImp implements MusicController {
                 }
             }
         }
+
         return musicController;
     }
 
@@ -105,6 +106,8 @@ public class MusicControllerImp implements MusicController {
     @Override
     public void play(Audio audio) {
         try {
+            LogUtils.INSTANCE.logD("audio"+audio+"status"+status);
+
             if (isSame(audio)) {
                 if (player.isPlaying()) {
                     pause();
@@ -208,7 +211,7 @@ public class MusicControllerImp implements MusicController {
     public boolean isSame(Audio audio) {
         if (audio == null) return false;
         if (this.audio == null) return false;
-        return player != null && this.audio != null && audio.getId() == this.audio.getId();
+        return player != null && this.audio != null && audio.getName() == this.audio.getName();
     }
 
     @Override

+ 31 - 17
app/src/main/java/com/jld/vod/view/MusicPlayActivity.kt

@@ -20,6 +20,7 @@ import com.bumptech.glide.request.transition.Transition
 import com.google.gson.Gson
 import com.jld.vod.R
 import com.jld.vod.audio.MusicController
+import com.jld.vod.audio.MusicControllerImp
 import com.jld.vod.base.BaseActivity
 import com.jld.vod.config.AudioFlag
 import com.jld.vod.config.AudioPlayerConstant
@@ -341,10 +342,16 @@ class MusicPlayActivity : BaseActivity(),View.OnClickListener {
             }
 
             override fun success(call: Call?, response: Response?) {
-                val json = response!!.body!!.string()
-                val gson = Gson()
-                val music = gson.fromJson(json, MusicByMidBeans::class.java)
-                setTest(music.data)
+                try {
+                    val json = response!!.body!!.string()
+                    val gson = Gson()
+                    val music = gson.fromJson(json, MusicByMidBeans::class.java)
+                    setTest(music.data)
+                }catch (e : Exception)
+                {
+                    e.printStackTrace()
+                }
+
                 //LogUtils.logD("response"+music.code)
             }
         })
@@ -403,7 +410,9 @@ class MusicPlayActivity : BaseActivity(),View.OnClickListener {
                 setCurrentProgress(musicController!!.playedDuration)
             }
             else -> if (needPlay) {
+                LogUtils.logD("autoPlaysssssssss")
                 play()
+
             }
         }
     }
@@ -463,26 +472,26 @@ class MusicPlayActivity : BaseActivity(),View.OnClickListener {
             audio.author = music[index].musicSinger
             audioList.add(audio)
         }
-//        this.runOnUiThread {
-//            tv_music_name.setText(audioList[musicId].name)
-//            tv_music_singer.setText(audioList[musicId].author)
-//        }
+
 //        LogUtils.logD("播放:$audioList----$musicId")
 
         for ((index,e) in audioList.withIndex()){
             LogUtils.logD("播放:$musicName-----"+audioList[index].name)
             if(audioList[index].name == musicName){
-                this.runOnUiThread {
-                    tv_music_name.setText(audioList[index].name)
-                    tv_music_singer.setText(audioList[index].author)
-                }
+//                this.runOnUiThread {
+//                    tv_music_name.setText(audioList[index].name)
+//                    tv_music_singer.setText(audioList[index].author)
+//                }
                 this.audio = audioList[index]
                 play(audio)
             }
         }
-//        this.audio = audioList[musicId]
-//        play(audio)
-
+        this.audio = audioList[musicId]
+        play(audio)
+        this.runOnUiThread {
+            tv_music_name.setText(audioList[musicId].name)
+            tv_music_singer.setText(audioList[musicId].author)
+        }
 
     }
 
@@ -578,7 +587,8 @@ class MusicPlayActivity : BaseActivity(),View.OnClickListener {
     private fun judgeState() {
         if (audio == null) return
         playerState = if (musicController != null && musicController!!.currentId === audio!!.id) {
-            musicController!!.state
+            //musicController!!.state
+            AudioFlag.NOT_PLAY_ITEM
         } else { //不是用以个音频
             AudioFlag.NOT_PLAY_ITEM
         }
@@ -601,13 +611,14 @@ class MusicPlayActivity : BaseActivity(),View.OnClickListener {
             }
             if (musicController!!.getPlayList() == null || musicController!!.getPlayList().isEmpty()) {
                 if (audioList != null) {
-                   // LogUtils.logD("MusicByMidBeans"+audioList)
+                //    LogUtils.logD("MusicByMidBeans"+audioList)
                     musicController!!.setPlayList(audioList)
                 }
             }
             musicController!!.setOnProgressChangedListener(progressChangedListener)
             musicController!!.setMediaCallBack(mediaCallBack)
             onPrepare()
+
            LogUtils.logD("onServiceConnected")
         }
 
@@ -760,13 +771,16 @@ class MusicPlayActivity : BaseActivity(),View.OnClickListener {
         if (connect && serviceConnection != null) {
             if (musicController != null) {
                 musicController!!.removeCallBack()
+              //  musicController!!.release()
             }
+            LogUtils.logD( "unbindService")
             unbindService(serviceConnection)
         }
 
         unregisterReceiver(receiver)
     }
 
+
     override fun onStart() {
         super.onStart()
         //初始化当前时间

+ 10 - 3
soundtouch/src/main/java/com/smp/soundtouchandroid/MediaCodecAudioDecoder.java

@@ -151,9 +151,16 @@ public class MediaCodecAudioDecoder implements AudioDecoder {
                 codecOutputBuffers = null;
                 if (isPlaying) {
                     codec.flush();
-                    codec.reset();
-                    codec.stop();
-                    codec.release();
+                    if (codec !=null)
+                    {
+                        codec.reset();
+                    }
+
+                    if (codec != null)
+                    {
+                        codec.stop();
+                        codec.release();
+                    }
                 }
                 codec = null;
                 Log.d("debug", "close codec");

+ 4 - 1
soundtouch/src/main/java/com/smp/soundtouchandroid/SoundStreamRunnable.java

@@ -349,7 +349,10 @@ public abstract class SoundStreamRunnable implements Runnable {
                 }
                 if (decodeLock != null) {
                     synchronized (decodeLock) {
-                        decoder.resetEOS();
+                        if (decoder != null)
+                        {
+                            decoder.resetEOS();
+                        }
                     }
                 }
             }