From 70d2b7cd0c8fe5dfb29bb2baf96997575ade2bac Mon Sep 17 00:00:00 2001 From: JLChen <551775569@qq.com> Date: 星期四, 08 七月 2021 18:34:38 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/newBranch1' into WJC --- HDL_ON/DAL/ThirdPartySdk/ESOnVideo.cs | 363 +++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 320 insertions(+), 43 deletions(-) diff --git a/HDL_ON/DAL/ThirdPartySdk/ESOnVideo.cs b/HDL_ON/DAL/ThirdPartySdk/ESOnVideo.cs index 9758f95..b6ad254 100644 --- a/HDL_ON/DAL/ThirdPartySdk/ESOnVideo.cs +++ b/HDL_ON/DAL/ThirdPartySdk/ESOnVideo.cs @@ -3,9 +3,11 @@ using HDL_ON.DAL.Server; using System.Threading; using System.Collections.Generic; +using HDL_ON.UI.UI2.PersonalCenter.PirDevice; #if __IOS__ using Shared.IOS.ESVideoOnSDK; +using Shared.IOS.LCVideoOnSDK; using UIKit; using Foundation; #else @@ -56,77 +58,151 @@ /// <summary> /// 鐩戞帶椤甸潰 /// </summary> - /// <param name="mESVideoInfo">涓版灄鐩戣鎵�闇�鐩稿叧鍙傛暟</param> - public void ShowESVideoMonitor(ESVideoInfo mESVideoInfo) + /// <param name="mESVideoInfo"></param> + public void ShowESVideoMonitor(ESVideoInfo mESVideoInfo, string interphoneType) { -#if __IOS__ - int roomID = 0; + this.esVideoInfo = mESVideoInfo; + int roomID = 0; int.TryParse(mESVideoInfo.roomno, out roomID); - ESOnMonitorViewController vc = new ESOnMonitorViewController(); - vc.MESVideoID = mESVideoInfo.ESVideoUUID; - vc.MESRoomID =roomID; - 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)); +#if __IOS__ + if (interphoneType == "IMOUVISIAL") + { + //涔愭鍙瀵硅 + //1.鍒濆鍖朙COpenSDK_Api + LCApiKit.SharedInstance().InitSDKOpenApi(mESVideoInfo.Lc_AccessToken); + LCApiKit.SharedInstance().CurrentDevicePlayToken = mESVideoInfo.Lc_PlayToken; + LCApiKit.SharedInstance().CurrentDeviceId = mESVideoInfo.Lc_DeviceId; + LCApiKit.SharedInstance().CurrentDeviceName = mESVideoInfo.DeviceName; + LCApiKit.SharedInstance().CurrentPsk = mESVideoInfo.Lc_DeviceId; + //2.璋冩暣鐩戣椤甸潰 + LCOnMonitorViewController vc = new LCOnMonitorViewController(); + mOnLCCallDelegate = new OnLCCallDelegate(this); + vc.MLCCallDelegate = mOnLCCallDelegate; + //vc.MLCCallDelegate = new OnLCCallDelegate(this); + Shared.Application.currentVC.NavigationController.PushViewController(vc, true); + } + else + { + + ESOnMonitorViewController vc = new ESOnMonitorViewController(); + vc.MESVideoID = mESVideoInfo.ESVideoUUID; + vc.MESRoomID = roomID; + vc.DeviceName = mESVideoInfo.DeviceName; + //vc.RoomName = mESVideoInfo.RoomName; + //vc.MESCallDelegate = new OnESCallDelegate(this); + Shared.Application.currentVC.NavigationController.PushViewController(vc, true); + } +#else + Intent intent = null; + if (interphoneType == "IMOUVISIAL") + { + intent = new Intent(Shared.Application.Activity, typeof(HDL_ON_Android.LeChengVideoActivity)); + } + else + { + 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("HomeID", PirSend.HomeId); intent.PutExtra("callId", mESVideoInfo.callId); intent.PutExtra("Type", 0); + + //=========涔愭========== + intent.PutExtra("AccessToken", mESVideoInfo.Lc_AccessToken); + intent.PutExtra("DeviceId", mESVideoInfo.Lc_DeviceId); + intent.PutExtra("Location", OnAppConfig.Instance.RequestHttpsHost.Contains("China") ? 0 : 1);//濡傛灉鍩熷悕鍖呭惈china锛屽垯鏄浗鍐呰处鍙�); + intent.PutExtra("PlayToken", mESVideoInfo.Lc_PlayToken); + intent.PutExtra("Psk", mESVideoInfo.Lc_Psk); + Shared.Application.Activity.StartActivity(intent); #endif } - - /// <summary> /// 琚懠鍙〉闈� /// </summary> - /// <param name="mESVideoInfo">涓版灄鍛煎彨鍔熻兘鎵�闇�鐩稿叧鍙傛暟</param> - public void ShowESvideoVideoIntercom(ESVideoInfo mESVideoInfo) + /// <param name="mESVideoInfo"></param> + public void ShowESvideoVideoIntercom(ESVideoInfo mESVideoInfo, string interphoneType) { this.esVideoInfo = mESVideoInfo; -#if __IOS__ int roomID = 0; int.TryParse(mESVideoInfo.roomno, out roomID); - ESOnIntercomViewController vc = new ESOnIntercomViewController(); - vc.MESVideoID = mESVideoInfo.ESVideoUUID; - vc.MESRoomID = roomID; - 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 +#if __IOS__ + if (interphoneType == "IMOUVISIAL") + { + //涔愭鍙瀵硅 + //1.鍒濆鍖朙COpenSDK_Api + LCApiKit.SharedInstance().InitSDKOpenApi(mESVideoInfo.Lc_AccessToken); + //2021-05-18 鐩墠鎺ㄩ�佺殑PlayToken;鏈夐棶棰樹細瀵艰嚧SDK宕╂簝锛屾殏鏃朵笉浼� + //LCApiKit.SharedInstance().CurrentDevicePlayToken = mESVideoInfo.Lc_PlayToken; + LCApiKit.SharedInstance().CurrentDeviceId = mESVideoInfo.Lc_DeviceId; + LCApiKit.SharedInstance().CurrentDeviceName = mESVideoInfo.DeviceName; + LCApiKit.SharedInstance().CurrentPsk = mESVideoInfo.Lc_DeviceId; + //2.璺宠浆涔愭鍛煎彨椤甸潰 + LCOnIntercomViewController vc = new LCOnIntercomViewController(); + mOnLCCallDelegate = new OnLCCallDelegate(this); + vc.MLCCallDelegate = mOnLCCallDelegate; + //vc.MLCCallDelegate = new OnLCCallDelegate(this); + Shared.Application.currentVC.NavigationController.PushViewController(vc, true); + } + else + { - Intent intent = new Intent(Shared.Application.Activity, typeof(HDL_ON_Android.VideoActivity)); + ESOnIntercomViewController vc = new ESOnIntercomViewController(); + vc.MESVideoID = mESVideoInfo.ESVideoUUID; + vc.MESRoomID = roomID; + 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 + #region + + Intent intent = null; + if (interphoneType == "IMOUVISIAL") + { + intent = new Intent(Shared.Application.Activity, typeof(HDL_ON_Android.LeChengVideoActivity)); + } + else + { + 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("HomeID", PirSend.HomeId); intent.PutExtra("callId", mESVideoInfo.callId); intent.PutExtra("Type", 1); + + //=========涔愭========== + intent.PutExtra("AccessToken", mESVideoInfo.Lc_AccessToken); + intent.PutExtra("DeviceId", mESVideoInfo.Lc_DeviceId); + intent.PutExtra("Location", OnAppConfig.Instance.RequestHttpsHost.Contains("China") ? 0 : 1);//濡傛灉鍩熷悕鍖呭惈china锛屽垯鏄浗鍐呰处鍙�); + intent.PutExtra("PlayToken", mESVideoInfo.Lc_PlayToken); + intent.PutExtra("Psk", mESVideoInfo.Lc_Psk); + Shared.Application.Activity.StartActivity(intent); + #endregion #endif } - #region 鍔ㄤ綔鍥炶皟锛屾彁浜よ褰曞埌浜戠 + #region 鍔ㄤ綔鍥炶皟鍜屽師鐢熶氦浜掞紝鎻愪氦璁板綍鍒颁簯绔� /// <summary> /// 鍒ゆ柇callId鏄惁涓虹┖ @@ -188,7 +264,7 @@ } else { - Utlis.WriteLine("POST 鎸傛柇澶辫触 code: "+ revertObj.Code); + Utlis.WriteLine("POST 鎸傛柇澶辫触 code: " + revertObj.Code); } }) @@ -262,6 +338,7 @@ } DateTime UnlockDateTime = DateTime.MinValue; + /// <summary> /// 寮�閿佹垚鍔� /// </summary> @@ -272,9 +349,9 @@ if (CheckESVideoInfoIsNullOrEmpty()) return; //3S鍐呬笉鍏佽瑙﹀彂绗簩娆� - if(UnlockDateTime.AddSeconds(3) > DateTime.Now) + if (UnlockDateTime.AddSeconds(3) > DateTime.Now) { - + Utlis.WriteLine("3S鍐呬笉鍏佽瑙﹀彂绗簩娆�"); //涓版灄SDKbug锛屽懠鍙殑鏃跺�欏紑閿佹垚鍔熶細鏈�2娆″洖璋冿紝 return; @@ -302,6 +379,77 @@ { IsBackground = false }.Start(); } + #endregion + + #region 鐜嬭耽鏂版帴鍚拰寮�閿佹帴鍙� + /// <summary> + /// 寮�閿� + /// </summary> + void HDLUnlockAction() + { + //Utlis.WriteLine("UnlockAction"); + + if (esVideoInfo == null) return; + + new Thread(() => + { + Dictionary<string, object> dic = new Dictionary<string, object>(); + dic.Add("deviceId", esVideoInfo.Lc_DeviceId);//璁惧id + dic.Add("callId", esVideoInfo.callId); + var requestJson = HttpUtil.GetSignRequestJson(dic); + var revertObj = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_VideoDevice_OpenDoorbell, requestJson); + if (revertObj.Code == StateCode.SUCCESS) + { + Application.RunOnMainThread(() => + { +#if __IOS__ + //鍜屽師鐢熺洃鎺х晫闈氦浜掋�佸彂閫佸紑閿佹垚鍔熼�氱煡 + NSNotificationCenter.DefaultCenter.PostNotificationName("lcCallDelegateOpenDoorSuccess", null); +#endif + }); + } + else + { + Utlis.WriteLine("POST 寮�閿佸け璐� code: " + revertObj.Code); + } + + }) + { IsBackground = false }.Start(); + } + + /// <summary> + /// 鏇存敼閫氳瘽鐘舵�� + /// </summary> + void HDLUpdateCallStatus(CallStatusType callStatusType, InterphoneType interphoneType, int callDuration = 0) { + + if (CheckESVideoInfoIsNullOrEmpty()) return; + + new Thread(() => + { + Dictionary<string, object> dic = new Dictionary<string, object>(); + dic.Add("callId", esVideoInfo.callId);//鍛煎彨id + dic.Add("callStatus", callStatusType.ToString());//鍙敤鍊�:MISSED,RECEIVED,REJECT + dic.Add("interphoneTypeEnum", interphoneType.ToString());//鍙敤鍊�:FLVI,IMOUVISIAL + if (callStatusType == CallStatusType.RECEIVED && callDuration > 0) + { + dic.Add("callDuration", callDuration);//閫氳瘽鏃堕暱锛堢锛� + } + + var requestJson = HttpUtil.GetSignRequestJson(dic); + var revertObj = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_VideoDevice_UpdateCallStatus, requestJson); + if (revertObj.Code == StateCode.SUCCESS) + { + + } + else + { + Utlis.WriteLine("POST 鏇存柊鐘舵�佸け璐� code: " + revertObj.Code); + } + + }) + { IsBackground = false }.Start(); + + } #endregion #if __IOS__ @@ -379,7 +527,77 @@ } -#endregion + #endregion + + #region OnLCCallDelegate + /////// <summary> + /////// OnLCCallDelegate 缁ф壙鍝嶅簲浜嬩欢 + /////// </summary> + OnLCCallDelegate mOnLCCallDelegate; + + /// <summary> + /// + /// </summary> + public class OnLCCallDelegate : LCCallDelegate + { + + [Weak] ESOnVideo _ESOnVideo; + + public OnLCCallDelegate(ESOnVideo mESOnVideo) + { + _ESOnVideo = mESOnVideo; + } + + /// <summary> + /// 鎺ュ惉 + /// </summary> + public override void OnAnswerAction() + { + _ESOnVideo.HDLUpdateCallStatus(CallStatusType.RECEIVED, InterphoneType.IMOUVISIAL); + } + + /// <summary> + /// 鎸傛柇 + /// </summary> + /// <param name="callDuration"></param> + public override void OnHangUpAction(int callDuration) + { + _ESOnVideo.HDLUpdateCallStatus(CallStatusType.RECEIVED, InterphoneType.IMOUVISIAL, callDuration); + } + + /// <summary> + /// 鎷掓帴 + /// </summary> + public override void OnRejectCallAction() + { + _ESOnVideo.HDLUpdateCallStatus(CallStatusType.REJECT, InterphoneType.IMOUVISIAL); + } + + /// <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.HDLUnlockAction(); + } + + } + + #endregion #endif /// <summary> @@ -392,23 +610,23 @@ { DeviceName = "瀹ゅ鏈�88", ESVideoUUID = "JJY000019VPLLF", - + }; if (isMonitor) { - ShowESVideoMonitor(eSVideoInfo); + ShowESVideoMonitor(eSVideoInfo, ""); } else { eSVideoInfo.callId = "88888"; - ShowESvideoVideoIntercom(eSVideoInfo); + ShowESvideoVideoIntercom(eSVideoInfo, ""); } } } /// <summary> - /// 涓版灄鐩戣鍜屽懠鍙姛鑳芥墍闇�鐩稿叧鍙傛暟 + /// 鍙瀵硅鍙傛暟瀵硅薄锛堜粎鍦ㄦ渶鍚庝竴姝ヨ烦杞埌activity鏃舵墠璋冪敤,涓轰簡鍋氬吋瀹硅繖閲岄兘鏁版嵁鏈夌偣涔憋紝浠ュ悗鏈夋椂闂村啀鐞嗛『鎬濊矾浼樺寲锛� /// </summary> public class ESVideoInfo { @@ -447,9 +665,68 @@ /// </summary> public string callId = string.Empty; + + //========================澶у崕========================== + + /// <summary> + /// 璐﹀彿accessToken + /// </summary> + public string Lc_AccessToken = string.Empty; + + /// <summary> + /// 璁惧搴忓垪鍙凤紝閫氳蹇呰瀛楁 + /// </summary> + public string Lc_DeviceId = string.Empty; + + /// <summary> + /// 澶囨敞锛燂紵锛� + /// </summary> + public string Lc_Psk = string.Empty; + + /// <summary> + /// 棰勮鐢婚潰蹇呴』浣跨敤 + /// </summary> + public string Lc_PlayToken = string.Empty; + + /// <summary> + /// 璐﹀彿鏍囪锛�0鍥藉唴锛�1鍥藉锛涘浗鍐呭浗澶栬闂兘鍦板潃涓嶄竴鏍� + /// </summary> + public int Lc_Location = 0; + } - + /// <summary> + /// 閫氳瘽鐘舵�佺被鍨� + /// </summary> + public enum CallStatusType + { + /// <summary> + /// 鏈帴 + /// </summary> + MISSED, + /// <summary> + /// 宸叉帴鍚� + /// </summary> + RECEIVED, + /// <summary> + /// 鎷掓帴 + /// </summary> + REJECT, + } + /// <summary> + /// 鍙瀵硅璁惧骞冲彴绫诲瀷 + /// </summary> + public enum InterphoneType + { + /// <summary> + /// 涓版灄骞冲彴 + /// </summary> + FLVI, + /// <summary> + /// 澶у崕鍙瀵硅骞冲彴 + /// </summary> + IMOUVISIAL, + } } -- Gitblit v1.8.0