Procházet zdrojové kódy

1.修改倒计时崩溃bug

王鹏鹏 před 2 roky
rodič
revize
fe1a22d0ef

+ 47 - 12
game/src/main/java/com/yingyangfly/game/dialog/CountdownDialog.kt

@@ -1,5 +1,6 @@
 package com.yingyangfly.game.dialog
 
+import android.media.MediaPlayer
 import android.os.Build
 import android.os.Bundle
 import android.view.LayoutInflater
@@ -11,7 +12,6 @@ import androidx.fragment.app.DialogFragment
 import com.bumptech.glide.Glide
 import com.gyf.immersionbar.BarHide
 import com.gyf.immersionbar.ktx.immersionBar
-import com.yingyangfly.baselib.player.VoicePlayer
 import com.yingyangfly.baselib.utils.LiveEventBusUtil
 import com.yingyangfly.baselib.utils.RxBusCodes
 import com.yingyangfly.baselib.utils.RxTimer
@@ -32,7 +32,6 @@ class CountdownDialog : DialogFragment() {
     private var loadingImage: AppCompatImageView? = null
     private var countdown = false
     private var loadingOver = false
-    private var voicePlayer: VoicePlayer? = null
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
@@ -66,7 +65,6 @@ class CountdownDialog : DialogFragment() {
         val rootView = ViewTool.inflateFragmentPixels(
             activity, R.layout.dialog_count_down, container, 1194, 834
         )
-        voicePlayer = VoicePlayer.getInstance(requireActivity())
         findId(rootView)
         initData()
         initTimer()
@@ -100,36 +98,73 @@ class CountdownDialog : DialogFragment() {
                 "1" -> {
                     imageCountdown!!.setBackgroundResource(R.mipmap.icon_one)
                     imageCountdown!!.post {
+                        val mediaPlayer = MediaPlayer()
                         val wavFile = resources.assets.openFd("one.wav")
-                        voicePlayer?.playByLocation(wavFile) {
-
+                        mediaPlayer.setDataSource(
+                            wavFile.fileDescriptor,
+                            wavFile.startOffset,
+                            wavFile.length
+                        )
+                        mediaPlayer.prepareAsync()
+                        mediaPlayer.setOnPreparedListener {
+                            mediaPlayer.start()
+                        }
+                        mediaPlayer.setOnCompletionListener {
+                            mediaPlayer.stop()
+                            mediaPlayer.reset()
                         }
                     }
                 }
                 "2" -> {
                     imageCountdown!!.setBackgroundResource(R.mipmap.icon_two)
                     imageCountdown!!.post {
+                        val mediaPlayer = MediaPlayer()
                         val wavFile = resources.assets.openFd("two.wav")
-                        voicePlayer?.playByLocation(wavFile) {
-
+                        mediaPlayer.setDataSource(
+                            wavFile.fileDescriptor,
+                            wavFile.startOffset,
+                            wavFile.length
+                        )
+                        mediaPlayer.prepareAsync()
+                        mediaPlayer.setOnPreparedListener {
+                            mediaPlayer.start()
+                        }
+                        mediaPlayer.setOnCompletionListener {
+                            mediaPlayer.stop()
+                            mediaPlayer.reset()
                         }
                     }
                 }
                 "3" -> {
                     imageCountdown!!.setBackgroundResource(R.mipmap.icon_three)
                     imageCountdown!!.post {
+                        val mediaPlayer = MediaPlayer()
                         val wavFile = resources.assets.openFd("three.wav")
-                        voicePlayer?.playByLocation(wavFile) {
-
+                        mediaPlayer.setDataSource(
+                            wavFile.fileDescriptor,
+                            wavFile.startOffset,
+                            wavFile.length
+                        )
+                        mediaPlayer.prepareAsync()
+                        mediaPlayer.setOnPreparedListener {
+                            mediaPlayer.start()
+                        }
+                        mediaPlayer.setOnCompletionListener {
+                            mediaPlayer.stop()
+                            mediaPlayer.reset()
                         }
                     }
                 }
             }
             if (it == time) {
                 countdown = true
+                rxTimer.cancel()
                 if (loadingOver) {
-                    onDialogClickListener?.invoke("")
-                    dismiss()
+                    imageCountdown!!.postDelayed({
+                        onDialogClickListener?.invoke("")
+                        dismiss()
+                    }, 600)
+
                 }
             }
 
@@ -137,8 +172,8 @@ class CountdownDialog : DialogFragment() {
             LiveEventBusUtil.observer<String>(this, RxBusCodes.LOADINGOVER) {
                 loadingOver = true
                 if (countdown) {
-                    onDialogClickListener?.invoke("")
                     rxTimer.cancel()
+                    onDialogClickListener?.invoke("")
                     dismiss()
                 }
             }