wxr
2024-01-08 51f5f7a47d394163dccf2441cd04c2a19ceeda34
HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/CommonMethod.cs
@@ -4,8 +4,8 @@
using Shared;
using HDL_ON.DAL.Server;
#if __IOS__
using Foundation;
#else
using Com.Videogo.Hdl;
#endif
namespace HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock
@@ -15,6 +15,7 @@
    /// </summary>
    public class CommonMethod
    {
        private Loading loading;
        /// <summary>
        /// 记录当前界面索引值
@@ -50,34 +51,36 @@
            this.InitializationAndroidData((isEzChildAccessToken) =>
            {
                this.MainThread(() =>
                this.SunThread(() =>
                {
#if __IOS__
                    //跳转添加萤石设备
                    ezsdkDelegate = new IosIHdlInterface();
                    ezsdkDelegate.mAction += (serials) =>
                    var list = this.GetVideoDoorLockLockModelsList("notAllowedConfigNetworkModels");
                    this.MainThread(() =>
                    {
                        this.GetYingshiDeviceList(serials);
                    };
                    EZSDK.IOS.EZSDK.SharedInstance().Delegate = ezsdkDelegate;
                    EZSDK.IOS.EZSDK.SharedInstance().AddEzvizMonitorWithDeviceType(spk);
#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);
                HDLEzvizSdk.SetAddCallback(new AndroidIHdlInterface((isBool, serials) =>
                {
                    if (isBool)
                    {
                        this.GetYingshiDeviceList(serials);
                    }
                }));
#endif
                    });
                });
            });
@@ -116,11 +119,12 @@
        /// <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) =>
@@ -152,7 +156,25 @@
            EZSDK.IOS.EZSDK.SharedInstance().PlayWithDeviceSerial(deviceSerial, deviceId, spk);
#else
            HDLEzvizSdk.Instance.JumpToEZRealPlayActivity(Application.Activity,deviceId,deviceSerial,spk);
#endif
        }
        /// <summary>
        /// 打开实时视频画面
        /// </summary>
        /// <param name="deviceSerial">设备序列号</param>
        /// <param name="deviceId">设备id(云端上deviceId)</param>
        /// <param name="spk">设备spk(云雀上定义好的)</param>
        /// <param name="msgId">消息id</param>
        private void SkipRTVActivity(string deviceSerial, string deviceId, string spk, string msgId)
        {
#if __IOS__
            //打开萤石视频界面
            EZSDK.IOS.EZSDK.SharedInstance().PlayWithDeviceSerial(deviceSerial, deviceId, spk, msgId);
#else
#endif
@@ -171,7 +193,6 @@
                    //打开萤石历史记录界面
                    EZSDK.IOS.EZSDK.SharedInstance().ToDeviceMsgListView(deviceId);
#else
                HDLEzvizSdk.Instance.JumpLockHistoryActivity(Application.Activity, deviceId);
#endif
                });
            });
@@ -191,7 +212,6 @@
                    //打开萤石临时密码界面
                    EZSDK.IOS.EZSDK.SharedInstance().ToTemPassView(deviceId);
#else
                HDLEzvizSdk.Instance.JumpTempPasswordActivity(Application.Activity, deviceId);
#endif
                });
            });
@@ -203,6 +223,7 @@
        public void InitializationAndroidData(Action<bool> action)
        {
            bool isBool = true;
            //this.Loading.Start();
            this.SunThread(() =>
            {
                try
@@ -215,14 +236,21 @@
                        {
                            //Token
                            isBool = false;
                            this.ShowTip("先获取萤石云子账号token失败。");
                            //this.ShowTip("获取萤石云子账号token失败。");
                            return;
                        }
                        string appKey = "1aa98a90489b4838b966b57018b4b04b";//正式服务器
                                                                           //if (OnAppConfig.Instance.RequestHttpsHost == "https://test-gz.hdlcontrol.com")
                                                                           //{
                                                                           //    appKey = "941b1b72b6294998acfd36c14931b675";//用在测试服务器推送的
                                                                           //}
#if __IOS__
                        //iOS
                        //初始化萤石云SDK,中文国内key、英文海外key 开发者账号使用应用包名申请的APPKEY,不同包名应用需配置不同的APPKEY
                        EZSDK.IOS.EZSDK.SharedInstance().InitLibWithAppKey("1aa98a90489b4838b966b57018b4b04b", "1aa98a90489b4838b966b57018b4b04b");
                        EZSDK.IOS.EZSDK.SharedInstance().InitLibWithAppKey(appKey, appKey);
                        //1.设置所需河东的AccessToken和RefreshToken、域名地址
                        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);
@@ -234,7 +262,7 @@
                        //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
@@ -249,6 +277,7 @@
                {
                    this.MainThread(() =>
                    {
                        //this.Loading.Hide();
                        action?.Invoke(isBool);
                    });
                }
@@ -265,7 +294,7 @@
            if (DB_ResidenceData.Instance.CurrentRegion.id == home.id || string.IsNullOrEmpty(home.id)) return;
#if __IOS__
#else
                HDLEzvizSdk.Instance.SetHomeId(home.id);
#endif
        }
@@ -275,9 +304,17 @@
        /// 获取【门锁型号】列表
        /// </summary>
        /// <returns>返回结果不会为null</returns>
        public List<string> GetVideoDoorLockLockModelsList()
        public List<string> GetVideoDoorLockLockModelsList(string mode = "lockModels")
        {
            return VideDoorLockSend.Current.GetVideoDoorLockLockModelsList();
            var lockModels = VideDoorLockSend.Current.GetVideoDoorLockLockModelsList();
            if (mode == "lockModels")
            {
                return lockModels.lockModels;
            }
            else
            {
                return lockModels.notAllowedConfigNetworkModels;
            }
        }
        /// <summary>
        /// 门锁推送
@@ -289,30 +326,50 @@
            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)
                try
                {
                    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 == null)
                    {
                        return;
                    }
                    if (expantContent.spk != SPK.VideoDoorLock)
                    {
                        return;
                    }
                    if (jpushMessageInfo.messageType.Contains(PushMessageType.DOOR_BELL.ToString()))
                    {
                        ///打开视频门锁
                        string currentTimeStr = Utlis.GetTimestamp();   // 当前时间
                        if (string.IsNullOrEmpty(expantContent.currentTime) && string.IsNullOrEmpty(currentTimeStr) && (long.Parse(currentTimeStr) - long.Parse(expantContent.currentTime)) > 30000)
                        {    // 超时30s
                            this.SkipRTVActivity(expantContent.devSerial, expantContent.deviceId, expantContent.spk, true);
                        }
                        else
                        {
                            this.SkipRTVActivity(expantContent.devSerial, expantContent.deviceId, expantContent.spk, expantContent.msgId);
                        }
                    }
                    else if (jpushMessageInfo.messageType.Contains(PushMessageType.Alarm.ToString()))
                    {
                        //低电量推送
                        this.UpdateDoorLockState(PushMessageType.Alarm);
                    }
                    else if (jpushMessageInfo.messageType.Contains(PushMessageType.Prompt.ToString()))
                    {
                        //开门推送
                        this.UpdateDoorLockState(PushMessageType.Prompt);
                    }
                }
                if (expantContent.spk != SPK.VideoDoorLock)
                catch (Exception ex)
                {
                    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);
                }
            });
@@ -382,13 +439,14 @@
        /// </summary>
        public string GetVideoDoorLockIcon(Comerom comerom)
        {
            if (comerom == Comerom.collect)
            {
                return "FunctionIcon/DoorLock/VideoDoorLockOpen.png";
                return "FunctionIcon/DoorLock/VideoDoorLockOpen1.png";
            }
            else
            {
                return "FunctionIcon/DoorLock/VideoDoorlockClose.png";
                return "FunctionIcon/DoorLock/VideoDoorlockClose1.png";
            }
        }
@@ -426,7 +484,7 @@
        }
        #region  ---------自定义线程(子线程,主线程)--------
        /// <summary>
        /// 子线程
@@ -511,7 +569,7 @@
            });
        }
        #endregion
        /// <summary>
        /// 弹框类型
@@ -531,12 +589,13 @@
            collect,//收藏
            room,//房间
            push,//推送
            sanfan,//添加第三方设备
        }
#if __IOS__
        IosIHdlInterface ezsdkDelegate;
        /// <summary>
        /// 专门定义给Ios回调用着,没有特殊含义
        /// 专门定义给Ios回调用,没有特殊含义
        /// </summary>
        public class IosIHdlInterface : EZSDK.IOS.EZSDKDelegate
        {
@@ -557,13 +616,14 @@
        }
#else
        /// <summary>
        /// 专门定义给安卓回调用着,没有特殊含义
        /// 专门定义给安卓回调用,没有特殊含义
        /// </summary>
        public class AndroidIHdlInterface : Java.Lang.Object, IHdlInterface
        public class AndroidIHdlInterface : Java.Lang.Object//, IHdlInterface
        {
            Action<bool,string> mAction;
            public AndroidIHdlInterface(Action<bool,string> action)
            Action<bool, string> mAction;
            Action<string> mDoorlockAnswer;
            public AndroidIHdlInterface(Action<bool, string> action)
            {
                mAction = action;
            }
@@ -574,10 +634,13 @@
            /// <param name="p1">设备的序列化(源生回调返回)</param>
            public void AddCallback(bool p0, string p1)
            {
                mAction?.Invoke(p0,p1);
                mAction?.Invoke(p0, p1);
            }
            public void DoorlockAnswer(string p0)
            {
                mDoorlockAnswer?.Invoke(p0);
            }
        }
#endif