Browse Source

1.优化进入游戏倒计时音效播放功能
2.购买服务套餐接口新增字段

王鹏鹏 2 years ago
parent
commit
e190706e7d

+ 30 - 48
game/src/main/java/com/yingyangfly/game/dialog/CountdownDialog.kt

@@ -1,6 +1,9 @@
 package com.yingyangfly.game.dialog
 
 import android.content.Context
+import android.media.AudioAttributes
+import android.media.AudioManager
+import android.media.SoundPool
 import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
@@ -11,7 +14,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
@@ -34,10 +36,8 @@ class CountdownDialog : DialogFragment() {
     private var tvTitle: AppCompatTextView? = null
     private var loadingOver = false
     private var content: Context? = null
-    private var oneStep = ""
-    private var twoStep = ""
-    private var threeStep = ""
-    private var voicePlayer: VoicePlayer? = null
+    private var soundPool: SoundPool? = null
+    private val soundIdArr = IntArray(3)
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
@@ -45,33 +45,21 @@ class CountdownDialog : DialogFragment() {
         dialog?.setCanceledOnTouchOutside(true)
     }
 
-    fun setContentBackground(
-        url: String,
-        title: String,
-        oneStep: String,
-        twoStep: String,
-        threeStep: String
-    ) {
+    fun setContentBackground(url: String, title: String) {
         this.url = url
         this.title = title
-        this.oneStep = oneStep
-        this.twoStep = twoStep
-        this.threeStep = threeStep
     }
 
     override fun onStart() {
         super.onStart()
         dialog?.window?.setLayout(
-            ViewGroup.LayoutParams.MATCH_PARENT,
-            ViewGroup.LayoutParams.MATCH_PARENT
+            ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT
         )
         dialog?.window?.setBackgroundDrawableResource(R.color.transparent)
     }
 
     override fun onCreateView(
-        inflater: LayoutInflater,
-        container: ViewGroup?,
-        savedInstanceState: Bundle?
+        inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
     ): View? {
         immersionBar {
             hideBar(BarHide.FLAG_HIDE_BAR)
@@ -81,7 +69,16 @@ class CountdownDialog : DialogFragment() {
             activity, R.layout.dialog_count_down, container, 2388, 1668
         )
         content = activity
-        voicePlayer = VoicePlayer.getInstance(content)
+        // 5.0 及 之后
+        soundPool =
+            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
+                val audioAttributes: AudioAttributes =
+                    AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_MEDIA)
+                        .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC).build()
+                SoundPool.Builder().setMaxStreams(3).setAudioAttributes(audioAttributes).build()
+            } else { // 5.0 以前
+                SoundPool(3, AudioManager.STREAM_MUSIC, 0)  // 创建SoundPool
+            }
         findId(rootView)
         initData()
         initTimer()
@@ -98,10 +95,10 @@ class CountdownDialog : DialogFragment() {
     }
 
     private fun initData() {
-        Glide.with(requireActivity())
-            .asGif()
-            .load(R.drawable.fish)
-            .into(loadingImage!!)
+        Glide.with(requireActivity()).asGif().load(R.drawable.fish).into(loadingImage!!)
+        soundIdArr[0] = soundPool!!.load(content, R.raw.one, 1)
+        soundIdArr[1] = soundPool!!.load(content, R.raw.two, 1)
+        soundIdArr[2] = soundPool!!.load(content, R.raw.three, 1)
     }
 
     /**
@@ -117,31 +114,17 @@ class CountdownDialog : DialogFragment() {
             when (date.toString()) {
                 "1" -> {
                     imageCountdown!!.setBackgroundResource(R.mipmap.icon_one)
-                    imageCountdown!!.post {
-                        if (voicePlayer != null) {
-                            voicePlayer?.play(oneStep) {
-                            }
-                        }
-
-                    }
+                    soundPool!!.play(soundIdArr[0], 1f, 1f, 1, 0, 1f)
                 }
+
                 "2" -> {
                     imageCountdown!!.setBackgroundResource(R.mipmap.icon_two)
-                    imageCountdown!!.post {
-                        if (voicePlayer != null) {
-                            voicePlayer?.play(twoStep) {
-                            }
-                        }
-                    }
+                    soundPool!!.play(soundIdArr[1], 1f, 1f, 1, 0, 1f)
                 }
+
                 "3" -> {
                     imageCountdown!!.setBackgroundResource(R.mipmap.icon_three)
-                    imageCountdown!!.post {
-                        if (voicePlayer != null) {
-                            voicePlayer?.play(threeStep) {
-                            }
-                        }
-                    }
+                    soundPool!!.play(soundIdArr[2], 1f, 1f, 1, 0, 1f)
                 }
             }
             if (it == time) {
@@ -162,15 +145,14 @@ class CountdownDialog : DialogFragment() {
         }
 
         //游戏加载完成
-        LiveEventBusUtil.observer<String>(this, RxBusCodes.LOADINGOVER)
-        {
+        LiveEventBusUtil.observer<String>(this, RxBusCodes.LOADINGOVER) {
             loadingOver = true
         }
     }
 
     override fun dismiss() {
-        if (voicePlayer != null) {
-            voicePlayer?.stop()
+        if (soundPool != null) {
+            soundPool?.release()
         }
         super.dismiss()
     }

+ 1 - 19
game/src/main/java/com/yingyangfly/game/play/PlayGameActivity.kt

@@ -90,9 +90,6 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
     /**
      * 游戏倒计时音效
      */
-    private var oneStep = ""
-    private var twoStep = ""
-    private var threeStep = ""
     private var gameSuccess = ""
     private var gameFailed = ""
     private var gameTimeOut = ""
@@ -329,18 +326,6 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
                     gameSoundbeans?.forEach {
                         if (TextUtils.isEmpty(it.voiceType).not()) {
                             when (it.voiceType) {
-                                "one" -> {
-                                    oneStep = it.voiceUrl
-                                }
-
-                                "two" -> {
-                                    twoStep = it.voiceUrl
-                                }
-
-                                "three" -> {
-                                    threeStep = it.voiceUrl
-                                }
-
                                 "fail" -> {
                                     gameFailed = it.voiceUrl
                                 }
@@ -360,10 +345,7 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
             val countdownDialog = CountdownDialog()
             countdownDialog.setContentBackground(
                 gameInbetweenImage,
-                gameName,
-                oneStep,
-                twoStep,
-                threeStep
+                gameName
             )
             countdownDialog.onDialogClickListener = {
                 if (loadingOver) {

BIN
game/src/main/res/raw/fail.mp3


BIN
game/src/main/res/raw/one.wav


BIN
game/src/main/res/raw/success.wav


BIN
game/src/main/res/raw/three.wav


BIN
game/src/main/res/raw/timeout.wav


BIN
game/src/main/res/raw/two.wav


+ 16 - 30
workbenches/src/main/java/com/yingyang/workbenches/dialog/PurchaseServicesDialog.kt

@@ -60,10 +60,7 @@ class PurchaseServicesDialog : DialogFragment() {
     private var purchaseServicesBtn: AppCompatButton? = null
 
     fun setPackageBean(
-        packageId: String,
-        payMoney: String,
-        packageName: String,
-        packageType: String
+        packageId: String, payMoney: String, packageName: String, packageType: String
     ) {
         this.packageId = packageId
         this.payMoney = payMoney
@@ -80,16 +77,13 @@ class PurchaseServicesDialog : DialogFragment() {
     override fun onStart() {
         super.onStart()
         dialog?.window?.setLayout(
-            ViewGroup.LayoutParams.MATCH_PARENT,
-            ViewGroup.LayoutParams.MATCH_PARENT
+            ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT
         )
         dialog?.window?.setBackgroundDrawableResource(R.color.transparent)
     }
 
     override fun onCreateView(
-        inflater: LayoutInflater,
-        container: ViewGroup?,
-        savedInstanceState: Bundle?
+        inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
     ): View? {
         immersionBar {
             hideBar(BarHide.FLAG_HIDE_BAR)
@@ -120,18 +114,16 @@ class PurchaseServicesDialog : DialogFragment() {
         val spannableString = SpannableString("您购买的是$packageName")
         spannableString.setSpan(
             ForegroundColorSpan(Color.parseColor("#FFFF2B2B")),
-            5, spannableString.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
+            5,
+            spannableString.length,
+            Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
         )
         tvPackageMoney?.text = spannableString
         //微信支付
         weChatLayout?.setOnSingleClickListener {
             getPayImage(
                 GetPayImageBean(
-                    packageId,
-                    "1",
-                    payMoney,
-                    packageName,
-                    packageType
+                    packageId, "1", payMoney, packageName, packageType, "B"
                 )
             )
         }
@@ -139,11 +131,7 @@ class PurchaseServicesDialog : DialogFragment() {
         alipayLayout?.setOnSingleClickListener {
             getPayImage(
                 GetPayImageBean(
-                    packageId,
-                    "2",
-                    payMoney,
-                    packageName,
-                    packageType
+                    packageId, "2", payMoney, packageName, packageType, "B"
                 )
             )
         }
@@ -198,9 +186,7 @@ class PurchaseServicesDialog : DialogFragment() {
      */
     private fun getPayImage(bean: GetPayImageBean) {
         val body = XUtils.createJson(GsonUtil.GsonString(bean))
-        WorkbenchesServiceFactory.getService()
-            .getPayImage(body)
-            .subscribeOn(Schedulers.io())
+        WorkbenchesServiceFactory.getService().getPayImage(body).subscribeOn(Schedulers.io())
             .compose(MyRxScheduler.ioMain(activity, true))
             .subscribe(object : BaseObserver<PayImageBean>() {
                 override fun onSuccess(t: PayImageBean?) {
@@ -241,9 +227,7 @@ class PurchaseServicesDialog : DialogFragment() {
      * 取消支付
      */
     private fun delPayOrder() {
-        WorkbenchesServiceFactory.getService()
-            .delPayOrder(orderNo)
-            .subscribeOn(Schedulers.io())
+        WorkbenchesServiceFactory.getService().delPayOrder(orderNo).subscribeOn(Schedulers.io())
             .compose(MyRxScheduler.ioMain(activity, true))
             .subscribe(object : BaseObserver<String>() {
                 override fun onSuccess(t: String?) {
@@ -260,10 +244,8 @@ class PurchaseServicesDialog : DialogFragment() {
      * 查询支付状态
      */
     private fun queryPaymentStatus() {
-        WorkbenchesServiceFactory.getService()
-            .getSelectPayResult(orderNo)
-            .subscribeOn(Schedulers.io())
-            .compose(MyRxScheduler.ioMain(activity, true))
+        WorkbenchesServiceFactory.getService().getSelectPayResult(orderNo)
+            .subscribeOn(Schedulers.io()).compose(MyRxScheduler.ioMain(activity, true))
             .subscribe(object : BaseObserver<String>() {
                 override fun onSuccess(t: String?) {
                     if (t.isNullOrEmpty().not()) {
@@ -271,17 +253,21 @@ class PurchaseServicesDialog : DialogFragment() {
                             "1" -> {
                                 "该订单正在支付中".toast()
                             }
+
                             "2" -> {
                                 "订单支付成功".toast()
                                 dismiss()
                             }
+
                             "3" -> {
                                 "订单支付失败".toast()
                             }
+
                             "4" -> {
                                 "该订单已退款".toast()
                                 dismiss()
                             }
+
                             "5" -> {
                                 "该订单已关闭".toast()
                                 dismiss()

+ 8 - 1
workbenches/src/main/java/com/yingyang/workbenches/entity/GetPayImageBean.java

@@ -2,6 +2,7 @@ package com.yingyang.workbenches.entity;
 
 /**
  * 获取支付二维码
+ *
  * @author 王鹏鹏
  */
 public class GetPayImageBean {
@@ -11,13 +12,15 @@ public class GetPayImageBean {
     private String payMoney;
     private String description;
     private String packageType;
+    private String orderType;
 
-    public GetPayImageBean(String relationId, String payMethod, String payMoney, String description, String packageType) {
+    public GetPayImageBean(String relationId, String payMethod, String payMoney, String description, String packageType, String orderType) {
         this.relationId = relationId;
         this.payMethod = payMethod;
         this.payMoney = payMoney;
         this.description = description;
         this.packageType = packageType;
+        this.orderType = orderType;
     }
 
     public String getRelationId() {
@@ -39,4 +42,8 @@ public class GetPayImageBean {
     public String getPackageType() {
         return packageType;
     }
+
+    public String getOrderType() {
+        return orderType;
+    }
 }