From 764185112d44c387e16f0483d8da898f8d998944 Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期五, 01 四月 2022 09:56:48 +0800
Subject: [PATCH] 大华可视对讲功能优化,自研可视对讲Android接入

---
 HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs |   81 ++++++++++++++++++++++++++++------------
 1 files changed, 57 insertions(+), 24 deletions(-)

diff --git a/HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs b/HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs
index 49857bf..854604f 100644
--- a/HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs
+++ b/HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs
@@ -98,6 +98,7 @@
             HDLLinphoneKit.Instance.InitLinphone(Application.Activity);
             //璁剧疆鏀跺埌鏉ョ數鍚庛�佹槸鍚﹂渶鑷姩璺宠浆鍛煎彨椤甸潰鏂规
             HDLLinphoneKit.Instance.AutoJumpCallView = IsAutoJumpCallView;
+            //HDLLinphoneKit.Instance.HangUp();//鎸傛柇
             //璁剧疆Listener鐩戝惉
             setOnHDLLinphoneCallListener();
 #endif
@@ -196,8 +197,6 @@
         {
             try
             {
-
-
                 //鍏堟竻绌哄懠鍙拰鐩戣璁惧淇℃伅
                 if (clearCallInfo)
                 {
@@ -371,13 +370,14 @@
         }
         #endregion
 
-     
+
         #region 鈻�  --  璺宠浆鐩戞帶椤甸潰_______________________________
         /// <summary>
         /// 璺宠浆鐩戞帶椤甸潰
         /// </summary>
         /// <param name="mESVideoInfo"></param>
-        public void ShowESVideoMonitor(ESVideoInfo mESVideoInfo)
+        /// <param name="enableMic">鏄惁鎵撳紑楹﹀厠椋�</param>
+        public void ShowESVideoMonitor(ESVideoInfo mESVideoInfo,bool enableMic,bool isCallIn = false)
         {
             InitLinphone();
             //sip璐﹀彿涓虹┖
@@ -395,6 +395,22 @@
             mHDLCallVideoInfo.DeviceSipAccount = mESVideoInfo.deviceSipAccount;//鐩戣涓诲姩鍛煎彨闂ㄥ彛鏈烘椂鐢ㄥ埌
             InitCallInfo(mHDLCallVideoInfo);
 
+            if (isCallIn)
+            {
+                HDLLinphoneKit.Instance.HangUp();
+            }
+            else
+            {
+                openMonitorPage(enableMic);
+            }
+        }
+
+        /// <summary>
+        /// 鎵撳紑鐩戣鐣岄潰
+        /// </summary>
+        void openMonitorPage(bool enableMic)
+        {
+
 #if __IOS__
 
             HDLLinPhoneSDK.Instance().CallWithUserName(mHDLCallVideoInfo.DeviceSipAccount, mHDLCallVideoInfo.DeviceName);
@@ -405,10 +421,16 @@
             //2.璺宠浆鎵撳紑鐩戞帶椤甸潰
             var intent = new Intent(Shared.Application.Activity, typeof(Com.Hdl.Hdllinphonesdk.Activity.HDLLinphoneMonitorActivity)); ;
             intent.PutExtra(HDLLinphoneKit.KeyTitleName, mHDLCallVideoInfo.DeviceName);//浼犲叆璁惧鍚嶇О涓烘樉绀烘爣棰�
+            intent.PutExtra(HDLLinphoneKit.Enablemic, enableMic);//鏄惁鎵撳紑楹﹀厠椋�
             Shared.Application.Activity.StartActivity(intent);
+
+
+
 #endif
 
         }
+
+
         #endregion
 
 
@@ -417,7 +439,8 @@
         /// 鏀跺埌鎺ㄩ�侊紝鍚庡垽鏂懠鍙綇瀹呮槸鍚︿负褰撳墠浣忓畢锛屼笉鏄殑璇濋噸鏂拌幏鍙朣IP璐﹀彿骞剁櫥褰�
         /// </summary>
         /// <param name="mESVideoInfo"></param>
-        public void ShowESVideoIntercom(ESVideoInfo mESVideoInfo)
+        /// <param name="isHdlLinphone">鏄惁鏄嚜鐮斿彲瑙嗗璁�</param>
+        public void ShowESVideoIntercom(ESVideoInfo mESVideoInfo,bool isHdlLinphone)
         {
             InitLinphone();
 
@@ -430,26 +453,36 @@
             mHDLCallVideoInfo.DeviceSipAccount = mESVideoInfo.deviceSipAccount;
             InitCallInfo(mHDLCallVideoInfo);
 
-            //褰撳墠鍛煎彨鏉ョ數鐨勪綇瀹呭拰涔嬪墠娉ㄥ唽鐧诲綍鐨勪綇瀹呬竴鑷寸殑鎯呭喌涓�
-            if (currentHDLSipInfo != null && currentHDLSipInfo.homeId == mESVideoInfo.HomeId)
+            if (isHdlLinphone)
             {
-                Utlis.WriteLine("CALL 鏀跺埌鎺ㄩ�� 鎺ㄩ�佷綇瀹呭拰涔嬪墠娉ㄥ唽鐧诲綍鐨勪綇瀹呬竴鑷�");
-                CheckCallStateAndGotoPage();
-            }
-            else
-            {
-                //娉ㄦ剰锛氫箣鍓嶆病鐧诲綍SIP璐﹀彿鎴栬�呬綇瀹呬笉涓�鑷寸殑鎯呭喌涓嬮渶瑕侀噸鏂拌幏鍙朣IP璐﹀彿
-                //鑾峰彇鍛煎彨浣忓畢鐨凷IP璐﹀彿骞剁櫥褰�
-                Utlis.WriteLine("CALL 鏀跺埌鎺ㄩ�� 鍏朵粬浣忓畢锛岄噸鏂拌幏鍙栧懠鍙綇瀹呯殑SIP璐﹀彿骞剁櫥褰�");
-                new Thread(() =>
+                //褰撳墠鍛煎彨鏉ョ數鐨勪綇瀹呭拰涔嬪墠娉ㄥ唽鐧诲綍鐨勪綇瀹呬竴鑷寸殑鎯呭喌涓�
+                if (currentHDLSipInfo != null && currentHDLSipInfo.homeId == mESVideoInfo.HomeId)
                 {
-                    GetHDLSipInfoAndInitSDK(mESVideoInfo.HomeId, false);
-                })
-                { IsBackground = false }.Start();
+                    Utlis.WriteLine("CALL 鏀跺埌鎺ㄩ�� 鎺ㄩ�佷綇瀹呭拰涔嬪墠娉ㄥ唽鐧诲綍鐨勪綇瀹呬竴鑷�");
+                    CheckCallStateAndGotoPage(true);
+                }
+            }
+            else {
+                //褰撳墠鍛煎彨鏉ョ數鐨勪綇瀹呭拰涔嬪墠娉ㄥ唽鐧诲綍鐨勪綇瀹呬竴鑷寸殑鎯呭喌涓�
+                if (currentHDLSipInfo != null && currentHDLSipInfo.homeId == mESVideoInfo.HomeId)
+                {
+                    Utlis.WriteLine("CALL 鏀跺埌鎺ㄩ�� 鎺ㄩ�佷綇瀹呭拰涔嬪墠娉ㄥ唽鐧诲綍鐨勪綇瀹呬竴鑷�");
+                    CheckCallStateAndGotoPage();
+                }
+                else
+                {
+                    //娉ㄦ剰锛氫箣鍓嶆病鐧诲綍SIP璐﹀彿鎴栬�呬綇瀹呬笉涓�鑷寸殑鎯呭喌涓嬮渶瑕侀噸鏂拌幏鍙朣IP璐﹀彿
+                    //鑾峰彇鍛煎彨浣忓畢鐨凷IP璐﹀彿骞剁櫥褰�
+                    Utlis.WriteLine("CALL 鏀跺埌鎺ㄩ�� 鍏朵粬浣忓畢锛岄噸鏂拌幏鍙栧懠鍙綇瀹呯殑SIP璐﹀彿骞剁櫥褰�");
+                    new Thread(() =>
+                    {
+                        GetHDLSipInfoAndInitSDK(mESVideoInfo.HomeId, false);
+                    })
+                    { IsBackground = false }.Start();
 
-                //
-                CheckCallStateAndGotoPage();
-
+                    //
+                    CheckCallStateAndGotoPage();
+                }
             }
 
         }
@@ -458,14 +491,14 @@
         /// 妫�娴嬫潵鐢电姸鎬侊紝鍒ゆ柇鏄惁椹笂鎵撳紑鍛煎彨椤甸潰锛屽鏋滆繕娌℃潵鐢靛垯寮�鍚嚎绋嬫娴嬬瓑寰�
         /// </summary>
         /// <param name="mESVideoInfo"></param>
-        public void CheckCallStateAndGotoPage()
+        public void CheckCallStateAndGotoPage(bool isHdlLinphone = false)
         {
             //濡傛灉寮�鍚簡鑷姩璺宠浆鏂规锛屽垯鏃犻渶缁х画涓嬮潰澶勭悊銆佹棤闇�鎵嬪姩璺宠浆
             if (IsAutoJumpCallView) return;
             //鍏堢粨鏉熸帀涔嬪墠鐨勭嚎绋�
             EndCheckIncomingCallThread();
             //妫�娴嬫槸鍚︽潵鐢典簡濡傛灉鏄洿鎺ヨ皟鏁村懠鍙〉闈㈠鏋滀笉鏄垯寮�鍚嚎绋嬬瓑寰呭垽鏂�
-            if (IsIncomingReceivedCallState()) {
+            if (IsIncomingReceivedCallState()|| isHdlLinphone) {
                 Utlis.WriteLine("CALL 宸茬粡鏉ョ數浜嗐�傘�傘�傛墦寮�鍛煎彨椤甸潰");
                 GoToHDLLinphoneIntercomActivity();
             }

--
Gitblit v1.8.0