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