From f676a4c180fc54cc82eecbfcd24d32fe7d8581db Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期五, 26 三月 2021 18:16:58 +0800
Subject: [PATCH] Merge branch 'CJL' into temp-wxr

---
 HDL_ON/DAL/ThirdPartySdk/ESOnVideo.cs |  445 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 445 insertions(+), 0 deletions(-)

diff --git a/HDL_ON/DAL/ThirdPartySdk/ESOnVideo.cs b/HDL_ON/DAL/ThirdPartySdk/ESOnVideo.cs
new file mode 100644
index 0000000..6b310f0
--- /dev/null
+++ b/HDL_ON/DAL/ThirdPartySdk/ESOnVideo.cs
@@ -0,0 +1,445 @@
+锘縰sing System;
+using HDL_ON;
+using HDL_ON.DAL.Server;
+using System.Threading;
+using System.Collections.Generic;
+
+#if __IOS__
+using Shared.IOS.ESVideoOnSDK;
+using UIKit;
+using Foundation;
+#else
+
+using Android.Content;
+
+#endif
+
+namespace Shared
+{
+    /// <summary>
+    /// 涓版灄鍙瀵硅
+    /// </summary>
+    public class ESOnVideo
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        private static ESOnVideo m_Current = null;
+        /// <summary>
+        /// 
+        /// </summary>
+        public static ESOnVideo Current
+        {
+            get
+            {
+                if (m_Current == null)
+                {
+                    m_Current = new ESOnVideo();
+                }
+                return m_Current;
+            }
+        }
+
+        /// <summary>
+        /// 闂ㄥ彛鏈恒�佷赴鏋楀皬鍖轰俊鎭拰鎴块棿淇℃伅绛夊弬鏁�
+        /// </summary>
+        public ESVideoInfo esVideoInfo;
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public void InitESVideoSDK()
+        {
+            //ESVideo.
+        }
+
+        /// <summary>
+        /// 鐩戞帶椤甸潰
+        /// </summary>
+        /// <param name="mESVideoInfo"></param>
+        public void ShowESVideoMonitor(ESVideoInfo mESVideoInfo)
+        {
+            this.esVideoInfo = mESVideoInfo;
+
+#if __IOS__
+            ESOnMonitorViewController vc = new ESOnMonitorViewController();
+            vc.MESVideoID = mESVideoInfo.ESVideoUUID;
+            //vc.MESRoomID = mESVideoInfo.ESRoomID;
+            vc.DeviceName = mESVideoInfo.DeviceName;
+            //vc.RoomName = mESVideoInfo.RoomName;
+            vc.MESCallDelegate = new OnESCallDelegate(this);
+            Shared.Application.currentVC.NavigationController.PushViewController(vc, true);
+#else
+
+            Intent intent = new Intent(Shared.Application.Activity, typeof(HDL_ON_Android.VideoActivity));
+            intent.PutExtra("ESVideoUUID", mESVideoInfo.ESVideoUUID);
+            intent.PutExtra("uuid", mESVideoInfo.uuid);
+            intent.PutExtra("DeviceName", mESVideoInfo.DeviceName);
+            intent.PutExtra("cmtID", mESVideoInfo.cmtID);
+            intent.PutExtra("roomno", mESVideoInfo.roomno);
+            intent.PutExtra("unitno", mESVideoInfo.unitno);
+            intent.PutExtra("HomeID", mESVideoInfo.HomeID);
+            intent.PutExtra("callId", mESVideoInfo.callId);
+            intent.PutExtra("Type", 0);
+            Shared.Application.Activity.StartActivity(intent);
+
+#endif
+        }
+
+
+
+        /// <summary>
+        /// 琚懠鍙〉闈�
+        /// </summary>
+        /// <param name="mESVideoInfo"></param>
+        public void ShowESvideoVideoIntercom(ESVideoInfo mESVideoInfo)
+        {
+            this.esVideoInfo = mESVideoInfo;
+#if __IOS__
+            ESOnIntercomViewController vc = new ESOnIntercomViewController();
+            vc.MESVideoID = mESVideoInfo.ESVideoUUID;
+            //vc.MESRoomID = mESVideoInfo.ESRoomID;
+            vc.DeviceName = mESVideoInfo.DeviceName;
+            //vc.RoomName = mESVideoInfo.RoomName;
+            //vc.MESCallDelegate = new OnESCallDelegate(this);
+            mOnESCallDelegate = new OnESCallDelegate(this);
+            vc.MESCallDelegate = mOnESCallDelegate;
+            Shared.Application.currentVC.NavigationController.PushViewController(vc, true);
+#else
+
+            Intent intent = new Intent(Shared.Application.Activity, typeof(HDL_ON_Android.VideoActivity));
+            intent.PutExtra("ESVideoUUID", mESVideoInfo.ESVideoUUID);
+            intent.PutExtra("uuid", mESVideoInfo.uuid);
+            intent.PutExtra("DeviceName", mESVideoInfo.DeviceName);
+            intent.PutExtra("cmtID", mESVideoInfo.cmtID);
+            intent.PutExtra("roomno", mESVideoInfo.roomno);
+            intent.PutExtra("unitno", mESVideoInfo.unitno);
+            intent.PutExtra("HomeID", mESVideoInfo.HomeID);
+            intent.PutExtra("callId", mESVideoInfo.callId);
+            intent.PutExtra("Type", 1);
+            Shared.Application.Activity.StartActivity(intent);
+
+#endif
+        }
+
+        #region 鍔ㄤ綔鍥炶皟锛屾彁浜よ褰曞埌浜戠
+
+        /// <summary>
+        /// 鍒ゆ柇callId鏄惁涓虹┖
+        /// </summary>
+        /// <returns></returns>
+        bool CheckESVideoInfoIsNullOrEmpty()
+        {
+            return (esVideoInfo == null || string.IsNullOrEmpty(esVideoInfo.callId));
+        }
+
+        /// <summary>
+        /// 鎺ュ惉
+        /// </summary>
+        void AnswerAction()
+        {
+            //Utlis.WriteLine("AnswerAction");
+
+            if (CheckESVideoInfoIsNullOrEmpty()) return;
+
+            new Thread(() =>
+            {
+                var requestJson = HttpUtil.GetSignRequestJson(esVideoInfo);
+                var revertObj = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_FL_Answer, requestJson);
+                if (revertObj.Code == StateCode.SUCCESS)
+                {
+                    //Utlis.WriteLine("POST 鎺ュ惉鎴愬姛");
+                }
+                else
+                {
+                    Utlis.WriteLine("POST 鎺ュ惉澶辫触 code: " + revertObj.Code);
+                }
+
+            })
+            { IsBackground = false }.Start();
+
+        }
+
+        /// <summary>
+        /// 鎸傛柇
+        /// </summary>
+        /// <param name="callDuration"></param>
+        void HangUpAction(int callDuration)
+        {
+            //Utlis.WriteLine("HangUpAction :" + callDuration);
+
+            if (CheckESVideoInfoIsNullOrEmpty()) return;
+
+            new Thread(() =>
+            {
+                Dictionary<string, object> dic = new Dictionary<string, object>();
+                dic.Add("callId", esVideoInfo.callId);
+                dic.Add("callDuration", callDuration);
+
+                var requestJson = HttpUtil.GetSignRequestJson(dic);
+                var revertObj = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_FL_HangUp, requestJson);
+                if (revertObj.Code == StateCode.SUCCESS)
+                {
+                    //Utlis.WriteLine("POST 鎸傛柇鎴愬姛");
+                }
+                else
+                {
+                    Utlis.WriteLine("POST 鎸傛柇澶辫触 code: "+ revertObj.Code);
+                }
+
+            })
+            { IsBackground = false }.Start();
+        }
+
+        /// <summary>
+        /// 鎷掓帴
+        /// </summary>
+        void RejectCallAction()
+        {
+            //Utlis.WriteLine("RejectCallAction");
+
+            if (CheckESVideoInfoIsNullOrEmpty()) return;
+
+            new Thread(() =>
+            {
+                Dictionary<string, object> dic = new Dictionary<string, object>();
+                dic.Add("callId", esVideoInfo.callId);
+
+                var requestJson = HttpUtil.GetSignRequestJson(dic);
+                var revertObj = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_FL_Reject, requestJson);
+                if (revertObj.Code == StateCode.SUCCESS)
+                {
+                    //Utlis.WriteLine("POST 鎷掓帴鎴愬姛");
+                }
+                else
+                {
+                    Utlis.WriteLine("POST 鎷掓帴澶辫触 code: " + revertObj.Code);
+                }
+
+            })
+            { IsBackground = false }.Start();
+        }
+
+        /// <summary>
+        /// 鎴浘鎴愬姛
+        /// </summary>
+        void ScreenshotSuccessfulAction(byte[] dataBytes)
+        {
+            //Utlis.WriteLine("ScreenshotSuccessfulAction");
+
+            if (CheckESVideoInfoIsNullOrEmpty()) return;
+
+            new Thread(() =>
+            {
+                //var imageName = Guid.NewGuid().ToString();
+                Dictionary<string, object> dic = new Dictionary<string, object>();
+                dic.Add("callId", esVideoInfo.callId);
+                dic.Add("images", dataBytes);
+#if __IOS__
+                dic.Add("imagesName", "_IOS.jpg");
+#else
+                dic.Add("imagesName", "_Android.jpg");
+#endif
+
+                var requestJson = HttpUtil.GetSignRequestJson(dic);
+                var revertObj = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_FL_Screenshot, requestJson);
+                if (revertObj.Code == StateCode.SUCCESS)
+                {
+                    //Utlis.WriteLine("POST 鎴浘涓婁紶鎴愬姛");
+                }
+                else
+                {
+                    Utlis.WriteLine("POST 鎴浘涓婁紶澶辫触 code: " + revertObj.Code);
+                }
+
+            })
+            { IsBackground = false }.Start();
+
+        }
+
+        DateTime UnlockDateTime = DateTime.MinValue;
+        /// <summary>
+        /// 寮�閿佹垚鍔�
+        /// </summary>
+        void UnlockAction()
+        {
+            //Utlis.WriteLine("UnlockAction");
+
+            if (CheckESVideoInfoIsNullOrEmpty()) return;
+
+            //3S鍐呬笉鍏佽瑙﹀彂绗簩娆�
+            if(UnlockDateTime.AddSeconds(3) > DateTime.Now)
+            {
+               
+                Utlis.WriteLine("3S鍐呬笉鍏佽瑙﹀彂绗簩娆�");
+                //涓版灄SDKbug锛屽懠鍙殑鏃跺�欏紑閿佹垚鍔熶細鏈�2娆″洖璋冿紝
+                return;
+            }
+
+            UnlockDateTime = DateTime.Now;
+
+            new Thread(() =>
+            {
+                Dictionary<string, object> dic = new Dictionary<string, object>();
+                dic.Add("callId", esVideoInfo.callId);
+
+                var requestJson = HttpUtil.GetSignRequestJson(dic);
+                var revertObj = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_FL_Unlock, requestJson);
+                if (revertObj.Code == StateCode.SUCCESS)
+                {
+                    //Utlis.WriteLine("POST 寮�閿佹垚鍔�");
+                }
+                else
+                {
+                    Utlis.WriteLine("POST 寮�閿佸け璐� code: " + revertObj.Code);
+                }
+
+            })
+            { IsBackground = false }.Start();
+        }
+
+#endregion
+
+#if __IOS__
+#region OnESCallDelegate
+        /////// <summary>
+        /////// OnESCallDelegate 缁ф壙鍝嶅簲浜嬩欢
+        /////// </summary>
+        OnESCallDelegate mOnESCallDelegate;
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public class OnESCallDelegate : ESCallDelegate
+        {
+
+            [Weak] ESOnVideo _ESOnVideo;
+
+            public OnESCallDelegate(ESOnVideo mESOnVideo)
+            {
+                _ESOnVideo = mESOnVideo;
+            }
+
+            /// <summary>
+            /// 鎺ュ惉
+            /// </summary>
+            public override void OnAnswerAction()
+            {
+                _ESOnVideo.AnswerAction();
+            }
+
+            /// <summary>
+            /// 鎸傛柇
+            /// </summary>
+            /// <param name="callDuration"></param>
+            public override void OnHangUpAction(int callDuration)
+            {
+                _ESOnVideo.HangUpAction(callDuration);
+            }
+
+            /// <summary>
+            /// 鎷掓帴
+            /// </summary>
+            public override void OnRejectCallAction()
+            {
+                _ESOnVideo.RejectCallAction();
+            }
+
+            /// <summary>
+            /// 鎴浘鎴愬姛
+            /// </summary>
+            /// <param name="image"></param>
+            public override void OnScreenshotSuccessfulAction(UIImage image)
+            {
+                //NSData imageData = UIImagePNGRepresentation(image); UIImage
+                NSData imageData = image.AsPNG();
+                byte[] dataBytes = new byte[imageData.Length];
+                System.Runtime.InteropServices.Marshal.Copy(imageData.Bytes, dataBytes, 0, Convert.ToInt32(imageData.Length));
+                //image.g
+                _ESOnVideo.ScreenshotSuccessfulAction(dataBytes);
+            }
+
+            /// <summary>
+            /// 寮�閿佹垚鍔�
+            /// </summary>
+            public override void OnUnlockAction()
+            {
+                _ESOnVideo.UnlockAction();
+            }
+
+        }
+
+#endregion
+#endif
+
+        /// <summary>
+        /// 娴嬭瘯鏂规硶
+        /// </summary>
+        /// <param name="isMonitor"></param>
+        public void Test(bool isMonitor = true)
+        {
+            ESVideoInfo eSVideoInfo = new ESVideoInfo()
+            {
+                DeviceName = "瀹ゅ鏈�88",
+                ESVideoUUID = "JJY000019VPLLF",
+                 
+            };
+            if (isMonitor)
+            {
+                ShowESVideoMonitor(eSVideoInfo);
+            }
+            else
+            {
+                eSVideoInfo.callId = "88888";
+                ShowESvideoVideoIntercom(eSVideoInfo);
+            }
+
+        }
+    }
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public class ESVideoInfo
+    {
+        /// <summary>
+        /// 瀹ゅ鏈虹殑UUID
+        /// 渚嬶細JJY000007FSEYX
+        /// </summary>
+        public string ESVideoUUID = string.Empty;
+        /// <summary>
+        /// 瀹ゅ鏈虹殑鍚嶇О
+        /// 渚嬶細瀹ゅ鏈�
+        /// </summary>
+        public string DeviceName = "瀹ゅ鏈�";
+        /// <summary>
+        /// 涓版灄璇锋眰鐨勫敮涓�id
+        /// </summary>
+        public string uuid;
+        /// <summary>
+        /// 涓版灄绀惧尯id
+        /// </summary>
+        public string cmtID;
+        /// <summary>
+        /// 涓版灄鎴块棿鍙�
+        /// </summary>
+        public string roomno;
+        /// <summary>
+        /// 涓版灄妤兼爧鍙�
+        /// </summary>
+        public string unitno;
+        ///// <summary>
+        ///// 涓版灄浣忓畢Id
+        ///// </summary>
+        //public string HomeID;
+        /// <summary>
+        /// 鍛煎彨璁板綍Id
+        /// </summary>
+        public string callId;
+
+    }
+
+    
+
+
+}

--
Gitblit v1.8.0