From 452e8cef1c740d18ee398be6971d9952e41dbd4a Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期三, 12 四月 2023 16:11:50 +0800
Subject: [PATCH] 1
---
HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/CommonMethod.cs | 568 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 556 insertions(+), 12 deletions(-)
diff --git a/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/CommonMethod.cs b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/CommonMethod.cs
index 2abf7ac..0a6aec7 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/CommonMethod.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/CommonMethod.cs
@@ -1,17 +1,31 @@
锘縰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,11 +40,362 @@
}
}
+
+ #region --------- 璺宠浆鍒癆ndroid锛宨os閭h竟鐨勬柟娉�(钀ょ煶瑙嗛闂ㄩ攣) --------
+ /// <summary>
+ /// 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>
+ /// 璇诲彇浜戠鐨勪笂钀ょ煶璁惧鍒楄〃
+ /// <paramref name="serials"/>搴忓垪鍙�</param>
+ private void GetYingshiDeviceList(string serials)
+ {
+ this.SunThread(() =>
+ {
+ 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.InitializationAndroidData((isEzChildAccessToken) =>
+ {
+ this.MainThread(() =>
+ {
+ 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;
+ }
+
+#if __IOS__
+ //iOS
+ //鍒濆鍖栬悿鐭充簯SDK锛屼腑鏂囧浗鍐卥ey銆佽嫳鏂囨捣澶杒ey 寮�鍙戣�呰处鍙蜂娇鐢ㄥ簲鐢ㄥ寘鍚嶇敵璇风殑APPKEY锛屼笉鍚屽寘鍚嶅簲鐢ㄩ渶閰嶇疆涓嶅悓鐨凙PPKEY
+ EZSDK.IOS.EZSDK.SharedInstance().InitLibWithAppKey("1aa98a90489b4838b966b57018b4b04b", "1aa98a90489b4838b966b57018b4b04b");
+ //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, "1aa98a90489b4838b966b57018b4b04b", 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")
+ {
+ return VideDoorLockSend.Current.GetVideoDoorLockLockModelsList(mode);
+ }
+ /// <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>
+ /// <param name="function">褰撳墠璁惧</param>
+ public void SaveFunctionFile(Function function)
+ {
+ if (function == null) return;
+ function.AssembleStatus();
+ function.SaveFunctionFile();
+ FunctionList.List.IniFunctionList(function.savePath, true);
+ MainPage.Log($"鏂囦欢淇濆瓨->{function.name}-->{function.spk}");
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鏈湴鏂囦欢
+ /// </summary>
+ /// <param name="function">褰撳墠璁惧</param>
+ public void DeleteFunction(Function function)
+ {
+ if (function == null) return;
+ FunctionList.List.DeleteFunction(function);
+ MainPage.Log($"鏂囦欢鍒犻櫎->{function.name}-->{function.spk}");
+ }
+ #endregion
/// <summary>
/// 钀ょ煶瑙嗛闂ㄩ攣鐨勫浘鏍�
+ /// <param name="comerom">鏉ヨ嚜閭i噷</param>
/// </summary>
public string GetVideoDoorLockIcon(Comerom comerom)
{
+
if (comerom == Comerom.collect)
{
return "FunctionIcon/DoorLock/VideoDoorLockOpen.png";
@@ -43,17 +408,196 @@
}
/// <summary>
- /// 鑾峰彇钀ょ煶瑙嗛闂ㄩ攣鍒楄〃
+ /// 鑾峰彇Loading瀵硅薄
/// </summary>
/// <returns></returns>
- public List<Function> GetVideoDoorLockList()
+ public Loading Loading
{
- 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;
+ 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>
+ public enum TipType
+ {
+ none,//鏃犳彁绀�
+ 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