From 592974441a4df95fffd9167c90192da1a390b1c2 Mon Sep 17 00:00:00 2001 From: wxr <464027401@qq.com> Date: 星期二, 06 六月 2023 11:51:12 +0800 Subject: [PATCH] Merge branch 'Dev-Branch' --- HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/CommonMethod.cs | 573 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 547 insertions(+), 26 deletions(-) diff --git a/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/CommonMethod.cs b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/CommonMethod.cs index ac956de..1392b63 100644 --- a/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/CommonMethod.cs +++ b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/CommonMethod.cs @@ -1,17 +1,32 @@ 锘縰sing System; using HDL_ON.Entity; using System.Collections.Generic; +using Shared; +using HDL_ON.DAL.Server; +#if __IOS__ +using Foundation; +#else +using Com.Videogo.Hdl; +#endif namespace HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock { + /// <summary> + /// 钀ょ煶瑙嗛闂ㄩ攣鍏叡鏂规硶绫� + /// </summary> public class CommonMethod { - public CommonMethod() - { - } + + private Loading loading; + /// <summary> + /// 璁板綍褰撳墠鐣岄潰绱㈠紩鍊� + /// </summary> + private int pageLayoutIndexValue; private static CommonMethod commonMethod = null; - + /// <summary> + /// 鑾峰彇瀵硅薄 + /// </summary> public static CommonMethod Current { get @@ -26,28 +41,349 @@ } } + + #region --------- 璺宠浆鍒癆ndroid锛宨os閭h竟鐨勬柟娉�(钀ょ煶瑙嗛闂ㄩ攣) -------- /// <summary> - /// 璺宠浆鍒癆ndroid閭h竟鍘� - /// </summary> - public void SkipActivity() + /// android,ios婧愮敓娣诲姞璁惧鍒颁簯绔垚鍔熷悗鍥炶皟鏂规硶 + /// 鍐嶈鍙栦簯绔殑涓婅悿鐭宠澶囧垪琛� + /// <paramref name="spk"/>spk</param> + public void SkipAddDeviceActivity(string spk) { - //鏈疄鐜� + + this.InitializationAndroidData((isEzChildAccessToken) => + { + this.SunThread(() => + { + var list = this.GetVideoDoorLockLockModelsList("notAllowedConfigNetworkModels"); + + this.MainThread(() => + { +#if __IOS__ + //璺宠浆娣诲姞钀ょ煶璁惧 + ezsdkDelegate = new IosIHdlInterface(); + ezsdkDelegate.mAction += (serials) => + { + this.GetYingshiDeviceList(serials); + }; + EZSDK.IOS.EZSDK.SharedInstance().Delegate = ezsdkDelegate; + NSObject[] nSObject = new NSObject[list.Count]; + for (int i = 0; i < list.Count; i++) + { + string strValue = list[i]; + nSObject[i] = new NSString(strValue); + } + EZSDK.IOS.EZSDK.SharedInstance().ConnectTipModels = nSObject; + EZSDK.IOS.EZSDK.SharedInstance().AddEzvizMonitorWithDeviceType(spk); + +#else + HDLEzvizSdk.Instance.JumpToEZScanActivity(Application.Activity, spk,list); + HDLEzvizSdk.SetAddCallback(new AndroidIHdlInterface((isBool, serials) => + { + if (isBool) + { + this.GetYingshiDeviceList(serials); + } + + })); +#endif + + }); + + + }); + }); + + + + + } /// <summary> - /// 钀ょ煶瑙嗛闂ㄩ攣鐨勫浘鏍� - /// </summary> - public string GetVideoDoorLockIcon(Comerom comerom) + /// 璇诲彇浜戠鐨勪笂钀ょ煶璁惧鍒楄〃 + /// <paramref name="serials"/>搴忓垪鍙�</param> + private void GetYingshiDeviceList(string serials) { - if (comerom == Comerom.collect) + this.SunThread(() => { - return "FunctionIcon/DoorLock/VideoDoorLockOpen.png"; + var list = VideDoorLockSend.Current.GetVideoDoorLockDeviceList(SPK.VideoDoorLock); + this.MainThread(() => + { + if (list.Count > 0) + { + var function = list.Find((o) => o.sid == serials); + if (function != null) + { + this.SaveFunctionFile(function); + } + } + }); + }); + + } + /// <summary> + /// 鎵撳紑瀹炴椂瑙嗛鐢婚潰 + /// </summary> + /// <param name="deviceSerial">璁惧搴忓垪鍙�</param> + /// <param name="deviceId">璁惧id(浜戠涓奷eviceId)</param> + /// <param name="spk">璁惧spk(浜戦泙涓婂畾涔夊ソ鐨�)</param> + /// <param name="isDialog">鏄惁闇�瑕佸脊妗�</param> + public void SkipRTVActivity(string deviceSerial, string deviceId, string spk, bool isDialog) + { + this.Loading.Start(); + this.InitializationAndroidData((isEzChildAccessToken) => + { + this.MainThread(() => + { + this.Loading.Hide(); + if (isDialog) + { + Video.View.ShowDialog.Currnet.ClickBox(Language.StringByID(StringId.laizimenlinghujiao), (dialog) => + { + dialog.Close(); + this.SkipRTVActivity(deviceSerial, deviceId, spk); + }, (dialog) => { dialog.Close(); }); + } + else + { + this.SkipRTVActivity(deviceSerial, deviceId, spk); + } + + }); + }); + + } + /// <summary> + /// 鎵撳紑瀹炴椂瑙嗛鐢婚潰 + /// </summary> + /// <param name="deviceSerial">璁惧搴忓垪鍙�</param> + /// <param name="deviceId">璁惧id(浜戠涓奷eviceId)</param> + /// <param name="spk">璁惧spk(浜戦泙涓婂畾涔夊ソ鐨�)</param> + private void SkipRTVActivity(string deviceSerial, string deviceId, string spk) + { + +#if __IOS__ + //鎵撳紑钀ょ煶瑙嗛鐣岄潰 + EZSDK.IOS.EZSDK.SharedInstance().PlayWithDeviceSerial(deviceSerial, deviceId, spk); + +#else + HDLEzvizSdk.Instance.JumpToEZRealPlayActivity(Application.Activity,deviceId,deviceSerial,spk); +#endif + + + } + + /// <summary> + /// 娴忚鍘嗗彶璁板綍 + /// </summary> + public void SkipRecordActivity(string deviceId) + { + this.InitializationAndroidData((s) => + { + this.MainThread(() => + { +#if __IOS__ + //鎵撳紑钀ょ煶鍘嗗彶璁板綍鐣岄潰 + EZSDK.IOS.EZSDK.SharedInstance().ToDeviceMsgListView(deviceId); +#else + HDLEzvizSdk.Instance.JumpLockHistoryActivity(Application.Activity, deviceId); +#endif + }); + }); + + } + /// <summary> + /// 涓存椂瀵嗙爜寮�闂� + /// <paramref name="deviceId"/> + /// </summary> + public void SkipPSWActivity(string deviceId) + { + this.InitializationAndroidData((isBools) => + { + this.MainThread(() => + { +#if __IOS__ + //鎵撳紑钀ょ煶涓存椂瀵嗙爜鐣岄潰 + EZSDK.IOS.EZSDK.SharedInstance().ToTemPassView(deviceId); +#else + HDLEzvizSdk.Instance.JumpTempPasswordActivity(Application.Activity, deviceId); +#endif + }); + }); + } + + /// <summary> + /// 鍒濆鍖栬悿鐭砈DK(瀹為檯灏辨槸浼犲弬鏁�,澶氭璋冪敤涔熸病鏈夊奖鍝�) + /// </summary> + public void InitializationAndroidData(Action<bool> action) + { + bool isBool = true; + //this.Loading.Start(); + this.SunThread(() => + { + try + { + //鍏堣幏鍙栬悿鐭充簯瀛愯处鍙穞oken + var ezChildAccessToken = VideDoorLockSend.Current.GetEZGetChildToken(); + this.MainThread(() => + { + if (string.IsNullOrEmpty(ezChildAccessToken)) + { + //Token + isBool = false; + //this.ShowTip("鑾峰彇钀ょ煶浜戝瓙璐﹀彿token澶辫触銆�"); + return; + } + + string appKey = "1aa98a90489b4838b966b57018b4b04b";//姝e紡鏈嶅姟鍣� + //if (OnAppConfig.Instance.RequestHttpsHost == "https://test-gz.hdlcontrol.com") + //{ + // appKey = "941b1b72b6294998acfd36c14931b675";//鐢ㄥ湪娴嬭瘯鏈嶅姟鍣ㄦ帹閫佺殑 + //} + + +#if __IOS__ + //iOS + //鍒濆鍖栬悿鐭充簯SDK锛屼腑鏂囧浗鍐卥ey銆佽嫳鏂囨捣澶杒ey 寮�鍙戣�呰处鍙蜂娇鐢ㄥ簲鐢ㄥ寘鍚嶇敵璇风殑APPKEY锛屼笉鍚屽寘鍚嶅簲鐢ㄩ渶閰嶇疆涓嶅悓鐨凙PPKEY + EZSDK.IOS.EZSDK.SharedInstance().InitLibWithAppKey(appKey, appKey); + //1.璁剧疆鎵�闇�娌充笢鐨凙ccessToken鍜孯efreshToken銆佸煙鍚嶅湴鍧� + EZSDK.IOS.EZSDK.SharedInstance().SetHDlAccessToken(UserInfo.Current.LoginTokenString, UserInfo.Current.RefreshToken); + EZSDK.IOS.EZSDK.SharedInstance().SetRequestHttpsHostAndPlatform(OnAppConfig.Instance.RequestHttpsHost, 1, DB_ResidenceData.Instance.CurrentRegion.id); + //2.璁剧疆钀ょ煶瀛愯处鍙风殑AccessToken鍒癝DK + EZSDK.IOS.EZSDK.SharedInstance().SetEZAccessToken(ezChildAccessToken); + //////3.鎵撳紑鎽勫儚澶磋澶囧垪琛ㄩ〉闈� + //EZSDK.IOS.EZSDK.SharedInstance().Go2EZvizMonitor(); + //EZSDK.IOS.EZDeviceInfo info = new EZSDK.IOS.EZDeviceInfo(); + //info.de + //EZSDK.IOS.EZSDK.Play(info); +#else + + HDLEzvizSdk.Instance.Init(Application.Activity.Application, ezChildAccessToken, UserInfo.Current.LoginTokenString, UserInfo.Current.RefreshToken, OnAppConfig.Instance.RequestHttpsHost, appKey, 1, DB_ResidenceData.Instance.CurrentRegion.id); + +#endif + + + }); + + } + catch (Exception e) + { + } + finally + { + this.MainThread(() => + { + //this.Loading.Hide(); + action?.Invoke(isBool); + }); + } + }); + } + + /// <summary> + /// 鏇存崲浣忓畢 + /// </summary> + /// <param name="home">瀵硅薄</param> + public void ChangeCurrHome(RegionInfoRes home) + { + + if (DB_ResidenceData.Instance.CurrentRegion.id == home.id || string.IsNullOrEmpty(home.id)) return; +#if __IOS__ +#else + HDLEzvizSdk.Instance.SetHomeId(home.id); +#endif + + } + #endregion + + /// <summary> + /// 鑾峰彇銆愰棬閿佸瀷鍙枫�戝垪琛� + /// </summary> + /// <returns>杩斿洖缁撴灉涓嶄細涓簄ull</returns> + public List<string> GetVideoDoorLockLockModelsList(string mode = "lockModels") + { + var lockModels = VideDoorLockSend.Current.GetVideoDoorLockLockModelsList(); + if (mode == "lockModels") + { + return lockModels.lockModels; } else { - return "FunctionIcon/DoorLock/VideoDoorlockClose.png"; + return lockModels.notAllowedConfigNetworkModels; + } + } + /// <summary> + /// 闂ㄩ攣鎺ㄩ�� + /// </summary> + /// <param name="pushMessageType"></param> + /// <param name="jPushMessageInfo"></param> + public void DoorLockPush(JPushMessageInfo jpushMessageInfo) + { + this.MainThread(() => + { + if (string.IsNullOrEmpty(jpushMessageInfo.expantContent)) return; + //{ "deviceSid":"J92513662","type":"opendoormsg","extDevId":"J92513662","deviceId":"1641010144999936001","spk":"security.door.ezviz"} + var expantContent = Newtonsoft.Json.JsonConvert.DeserializeObject<ExpantContent>(jpushMessageInfo.expantContent); + if (expantContent == null) + { + return; + } + if (expantContent.spk != SPK.VideoDoorLock) + { + return; + } + if (jpushMessageInfo.messageType.Contains(PushMessageType.DOOR_BELL.ToString())) + { + ///鎵撳紑瑙嗛闂ㄩ攣 + this.SkipRTVActivity(expantContent.devSerial, expantContent.deviceId, expantContent.spk, true); + } + else if (jpushMessageInfo.messageType.Contains(PushMessageType.Alarm.ToString())) + { + //浣庣數閲忔帹閫� + this.UpdateDoorLockState(PushMessageType.Alarm); + } + else if (jpushMessageInfo.messageType.Contains(PushMessageType.Prompt.ToString())) + { + //寮�闂ㄦ帹閫� + this.UpdateDoorLockState(PushMessageType.Prompt); + } + }); + + } + /// <summary> + /// 鏇存柊寮�閿佸浘鏍囧拰鐢垫睜鐘舵�� + /// </summary> + private void UpdateDoorLockState(PushMessageType pushMessageType) + { + int childrenCount = MainPage.BasePageView.ChildrenCount - 1; + for (int i = childrenCount; childrenCount > i; i--) + { + View view = MainPage.BasePageView.GetChildren(i); + if (view is VideoDoorLockPage) + { + VideoDoorLockPage videoDoorLockPage = (VideoDoorLockPage)view; + if (videoDoorLockPage != null) + { + videoDoorLockPage.UpdateState(pushMessageType); + } + + } } } + /// <summary> + /// 鑾峰彇钀ょ煶瑙嗛銆愰棬閿併�戝垪琛� + /// </summary> + /// <returns></returns> + public List<Function> GetVideoDoorLockList() + { + var list = FunctionList.List.GetVideoDoorLockList(); +#if DEBUG + //list.Add(new Function { name = "瑙嗛闂ㄩ攣涓�", sid = "23456789", spk = SPK.VideoDoorLock }); + //list.Add(new Function { name = "瑙嗛闂ㄩ攣浜�", sid = "2345678922", spk = SPK.VideoDoorLock }); +#endif + return list; + } + #region --------- 鍔熻兘鏂囦欢淇濆瓨锛屽垹闄� -------- /// <summary> /// 淇濆瓨鏈湴鏂囦欢 /// </summary> @@ -71,23 +407,145 @@ FunctionList.List.DeleteFunction(function); MainPage.Log($"鏂囦欢鍒犻櫎->{function.name}-->{function.spk}"); } - - - + #endregion /// <summary> - /// 鑾峰彇钀ょ煶瑙嗛闂ㄩ攣鍒楄〃 + /// 钀ょ煶瑙嗛闂ㄩ攣鐨勫浘鏍� + /// <param name="comerom">鏉ヨ嚜閭i噷</param> /// </summary> - /// <returns></returns> - public List<Function> GetVideoDoorLockList() + public string GetVideoDoorLockIcon(Comerom comerom) { - var list = FunctionList.List.GetVideoDoorLockList(); -#if DEBUG - //list.Add(new Function { name = "瑙嗛闂ㄩ攣涓�", sid = "23456789", spk = SPK.VideoDoorLock }); - //list.Add(new Function { name = "瑙嗛闂ㄩ攣浜�", sid = "2345678922", spk = SPK.VideoDoorLock }); -#endif - return list; + + if (comerom == Comerom.collect) + { + return "FunctionIcon/DoorLock/VideoDoorLockOpen1.png"; + } + else + { + return "FunctionIcon/DoorLock/VideoDoorlockClose1.png"; + } + } + /// <summary> + /// 鑾峰彇Loading瀵硅薄 + /// </summary> + /// <returns></returns> + public Loading Loading + { + get + { + this.MainThread(() => + { + //if (loading != null && this.pageLayoutIndexValue == MainPage.BasePageView.ChildrenCount - 1) + //{ + // //闃叉浜岄噸娣诲姞瀵硅薄 + // return; + //} + if (loading == null)//|| MainPage.BasePageView.ChildrenCount < 1) + { + loading = new Loading(); + } + //loading.BringToFront(); + Application.MainPage.AddChidren(loading); + //View view = MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1); + //if (view is ViewGroup) + //{ + // pageLayoutIndexValue = MainPage.BasePageView.ChildrenCount - 1; + // ((ViewGroup)view).AddChidren(loading); + //} + }); + return loading; + } + + } + + + #region ---------鑷畾涔夌嚎绋�(瀛愮嚎绋嬶紝涓荤嚎绋�)-------- + /// <summary> + /// 瀛愮嚎绋� + /// </summary> + /// <paramref name="tipType"/>鏄惁瑕佹彁绀洪敊璇俊鎭�(榛樿鏄剧ず)<paramref> + /// <param name="action"></param> + public void SunThread(Action action, TipType tipType = TipType.confirmation) + { + new System.Threading.Thread(() => + { + try + { + action?.Invoke(); + } + catch (Exception e) + { + this.ShowAlert(e, tipType); + } + }) + { IsBackground = true }.Start(); + + } + /// <summary> + /// 涓荤嚎绋�(UI鏇存柊) + /// </summary> + /// <paramref name="tipType"/>鏄惁瑕佹彁绀洪敊璇俊鎭�(榛樿鏄剧ず)<paramref> + /// <param name="action"></param> + public void MainThread(Action action, TipType tipType = TipType.confirmation) + { + Application.RunOnMainThread(() => + { + try + { + action?.Invoke(); + } + catch (Exception e) + { + this.ShowAlert(e, tipType); + } + }); + + } + #endregion + #region --------- 鎻愮ず妗嗭紝纭妗� -------- + /// <summary> + /// 瀵硅瘽妗�(鍙绋嬪簭鎶ラ敊鐨勬椂鍊欐墠鐢ㄥ埌) + /// </summary> + /// <paramref name="e"/>寮傚父瀵硅薄<paramref> + /// <paramref name="tipType"/>鏄惁瑕佹彁绀洪敊璇俊鎭�(榛樿鏄剧ず)<paramref> + private void ShowAlert(Exception e, TipType tipType) + { + + if (tipType != TipType.confirmation) + { + return; + } + Application.RunOnMainThread(() => + { + string msg = e.Message + "\r\n" + e.StackTrace; + Alert alert = new Alert("鎶辨瓑绋嬪簭鍑洪敊浜�.", "鎸塡"纭畾\"鑳借幏鍙栨洿璇︾粏鐨勯敊璇俊鎭�.", "鍙栨秷", "纭畾"); + alert.Show(); + alert.ResultEventHandler += (alerts, isBool) => + { + alert.Dismiss(); + if (isBool) + { + StackTraceLog stackTraceLog = new StackTraceLog(msg); + stackTraceLog.Show(); + } + }; + }); + } + /// <summary> + /// 淇℃伅鎻愮ず绐楀彛锛岃嚜鍔ㄥ叧闂� + /// </summary> + /// <param name="msg">鎻愮ず閿欒鏂囨湰</param> + public void ShowTip(string msg, int time = 2) + { + Application.RunOnMainThread(() => + { + new PublicAssmebly().TipMsgAutoClose(msg, false, time * 1000); + }); + } + + + #endregion /// <summary> /// 寮规绫诲瀷 /// </summary> @@ -97,5 +555,68 @@ flicker,//闂儊妗� confirmation//纭妗� } + /// <summary> + /// 琛ㄧず鏉ヨ嚜閭d釜鐣岄潰 + /// </summary> + public enum Comerom + { + function,//鍔熻兘 + collect,//鏀惰棌 + room,//鎴块棿 + push,//鎺ㄩ�� + sanfan,//娣诲姞绗笁鏂硅澶� + } + +#if __IOS__ + IosIHdlInterface ezsdkDelegate; + /// <summary> + /// 涓撻棬瀹氫箟缁橧os鍥炶皟鐢�,娌℃湁鐗规畩鍚箟 + /// </summary> + public class IosIHdlInterface : EZSDK.IOS.EZSDKDelegate + { + public Action<string> mAction; + public IosIHdlInterface() + { + + } + /// <summary> + /// + /// </summary> + /// <param name="p0">true鏄叆缃戞垚鍔�(婧愮敓鍥炶皟杩斿洖)</param> + /// <param name="p1">璁惧鐨勫簭鍒楀寲(婧愮敓鍥炶皟杩斿洖)</param> + public override void AddDeviceSuccessed(string deviceSerial) + { + mAction?.Invoke(deviceSerial); + } + } +#else + /// <summary> + /// 涓撻棬瀹氫箟缁欏畨鍗撳洖璋冪敤,娌℃湁鐗规畩鍚箟 + /// </summary> + public class AndroidIHdlInterface : Java.Lang.Object, IHdlInterface + { + + Action<bool,string> mAction; + public AndroidIHdlInterface(Action<bool,string> action) + { + mAction = action; + } + /// <summary> + /// + /// </summary> + /// <param name="p0">true鏄叆缃戞垚鍔�(婧愮敓鍥炶皟杩斿洖)</param> + /// <param name="p1">璁惧鐨勫簭鍒楀寲(婧愮敓鍥炶皟杩斿洖)</param> + public void AddCallback(bool p0, string p1) + { + mAction?.Invoke(p0,p1); + } + + + } +#endif + + } + + } -- Gitblit v1.8.0