Browse Source

铃声播放处理放到公共模块

weizhengliang 2 years ago
parent
commit
cfb7e3ccbf

+ 1 - 1
android_bed/src/main/h7_3128/java/com/wdkl/app/ncs/callingbed/fragment/BaseCallFragment.kt

@@ -10,7 +10,6 @@ import android.view.ViewGroup
 import android.widget.TextView
 import com.enation.javashop.utils.base.tool.BaseToolActivity
 import com.wdkl.app.ncs.callingbed.R
-import com.wdkl.app.ncs.callingbed.helper.RingPlayHelper
 import com.wdkl.app.ncs.callingbed.helper.SerialPortHelper
 import com.wdkl.app.ncs.callingbed.settings.SettingConfig
 import com.wdkl.ncs.android.lib.utils.showMessage
@@ -18,6 +17,7 @@ import com.wdkl.ncs.android.middleware.common.Constant
 import com.wdkl.ncs.android.middleware.common.MessageEvent
 import com.wdkl.ncs.android.middleware.tcp.channel.VoiceUtil
 import com.wdkl.ncs.android.middleware.tcp.dto.TcpModel
+import com.wdkl.ncs.android.middleware.utils.RingPlayHelper
 import org.greenrobot.eventbus.EventBus
 
 abstract class BaseCallFragment: Fragment(), View.OnTouchListener {

+ 1 - 1
android_bed/src/main/h7_3128/java/com/wdkl/app/ncs/callingbed/fragment/SkyCallFragment.kt

@@ -9,7 +9,6 @@ import android.view.ViewGroup
 import com.google.gson.Gson
 import com.wdkl.app.ncs.callingbed.R
 import com.wdkl.app.ncs.callingbed.activity.CallingbedActivity
-import com.wdkl.app.ncs.callingbed.helper.RingPlayHelper
 import com.wdkl.app.ncs.callingbed.helper.SerialPortHelper
 import com.wdkl.app.ncs.callingbed.helper.VoiceManagerUtil
 import com.wdkl.app.ncs.callingbed.settings.SettingConfig
@@ -23,6 +22,7 @@ import com.wdkl.ncs.android.middleware.tcp.channel.VoiceUtil
 import com.wdkl.ncs.android.middleware.tcp.dto.TcpModel
 import com.wdkl.ncs.android.middleware.tcp.enums.TcpAction
 import com.wdkl.ncs.android.middleware.tcp.enums.TcpType
+import com.wdkl.ncs.android.middleware.utils.RingPlayHelper
 import com.wdkl.ncs.janus.client.CallSessionCallback
 import com.wdkl.ncs.janus.client.JanusClient
 import com.wdkl.ncs.janus.client.VideoRoomCallback

+ 4 - 10
android_bed/src/main/h7_3128/java/com/wdkl/app/ncs/callingbed/helper/CallDialogHelper.java

@@ -13,17 +13,13 @@ import android.widget.LinearLayout;
 import android.widget.RelativeLayout;
 
 import com.wdkl.app.ncs.callingbed.R;
+import com.wdkl.ncs.android.middleware.utils.RingPlayHelper;
 
 public class CallDialogHelper {
 
     private static AlertDialog callDialog;
 
-    private static AsyncPlayer ringPlayer;
-
     public static void showCallDialog(Activity activity, int callType, View.OnClickListener hangupCall, View.OnClickListener acceptCall, View.OnClickListener rejectCall) {
-        if (ringPlayer == null) {
-            ringPlayer = new AsyncPlayer(null);
-        }
 
         View contentView = LayoutInflater.from(activity).inflate(R.layout.call_dialog_lay, null);
         AlertDialog.Builder builder = new AlertDialog.Builder(activity);
@@ -40,12 +36,12 @@ public class CallDialogHelper {
             //去电
             outCall.setVisibility(View.VISIBLE);
             inCall.setVisibility(View.GONE);
-            ringPlayer.play(activity, R.raw.ring_back2, true, AudioManager.STREAM_MUSIC);
+            RingPlayHelper.playRingTone(activity, R.raw.ring_back2, true);
         } else {
             //来电
             outCall.setVisibility(View.GONE);
             inCall.setVisibility(View.VISIBLE);
-            ringPlayer.play(activity, R.raw.ring_tone, true, AudioManager.STREAM_MUSIC);
+            RingPlayHelper.playRingTone(activity, R.raw.ring_tone, true);
         }
 
         hangup.setOnClickListener(hangupCall);
@@ -76,8 +72,6 @@ public class CallDialogHelper {
         if (callDialog != null && callDialog.isShowing()) {
             callDialog.dismiss();
         }
-        if (ringPlayer != null) {
-            ringPlayer.stop();
-        }
+        RingPlayHelper.stopRingTone();
     }
 }

+ 0 - 22
android_bed/src/main/h7_3128/java/com/wdkl/app/ncs/callingbed/helper/RingPlayHelper.java

@@ -1,22 +0,0 @@
-package com.wdkl.app.ncs.callingbed.helper;
-
-import android.content.Context;
-import android.media.AudioManager;
-
-public class RingPlayHelper {
-
-    private static AsyncPlayer ringPlayer;
-
-    public static void playRingTone(Context context, int res, boolean loop) {
-        if (ringPlayer == null) {
-            ringPlayer = new AsyncPlayer(null);
-        }
-        ringPlayer.play(context, res, loop, AudioManager.STREAM_MUSIC);
-    }
-
-    public static void stopRingTone() {
-        if (ringPlayer != null) {
-            ringPlayer.stop();
-        }
-    }
-}

+ 5 - 1
android_bed/src/main/h7_3128/java/com/wdkl/app/ncs/callingbed/helper/AsyncPlayer.java

@@ -1,4 +1,4 @@
-package com.wdkl.app.ncs.callingbed.helper;
+package com.wdkl.ncs.android.middleware.utils;
 
 import android.content.Context;
 import android.media.AudioDeviceInfo;
@@ -138,6 +138,10 @@ public class AsyncPlayer {
         }
     }
 
+    public boolean isPlay() {
+        return mState == PLAY;
+    }
+
     private void enqueueLocked(Command cmd) {
         mCmdQueue.add(cmd);
         if (mThread == null) {

+ 38 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/utils/RingPlayHelper.java

@@ -0,0 +1,38 @@
+package com.wdkl.ncs.android.middleware.utils;
+
+import android.content.Context;
+import android.media.AudioManager;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+
+public class RingPlayHelper {
+
+    private static AsyncPlayer ringPlayer;
+    private final static Handler handler = new Handler(Looper.getMainLooper()) {
+        @Override
+        public void handleMessage(Message msg) {
+            if (ringPlayer != null) {
+                ringPlayer.stop();
+            }
+        }
+    };
+
+    public static void playRingTone(Context context, int res, boolean loop) {
+        if (ringPlayer == null) {
+            ringPlayer = new AsyncPlayer(null);
+        }
+
+        if (!ringPlayer.isPlay()) {
+            ringPlayer.play(context, res, loop, AudioManager.STREAM_MUSIC);
+            handler.removeCallbacksAndMessages(null);
+            handler.sendEmptyMessageDelayed(10, 60000);
+        }
+    }
+
+    public static void stopRingTone() {
+        if (ringPlayer != null) {
+            ringPlayer.stop();
+        }
+    }
+}