wjc
2023-03-15 372ebbd137d2951a7ac03b964d530d05ad7a5971
2023年03月15日18:16:54

保存一下代码
1个文件已添加
8个文件已修改
439 ■■■■ 已修改文件
HDL_ON/HDL_ON.projitems 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPageBLL.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Video/View/ShowDialog.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/CommonMethod.cs 279 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/ObjectClass.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/StackTraceLog.cs 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideDoorLockSend.cs 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorLockPage.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/HDL_ON.projitems
@@ -533,6 +533,7 @@
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\VideoDoorLock\CommonMethod.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\VideoDoorLock\ObjectClass.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\VideoDoorLock\VideDoorLockSend.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\VideoDoorLock\StackTraceLog.cs" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="$(MSBuildThisFileDirectory)Entity\Device\" />
HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs
@@ -182,7 +182,7 @@
                            break;
                        case SPK.VideoDoorLock: {
                                //跳转到android那边去
                                HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock.CommonMethod.Current.SkipAddDeviceActivity();
                                HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock.CommonMethod.Current.SkipAddDeviceActivity("K36229010");
                            }
                            break;
                    }
HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPageBLL.cs
@@ -415,6 +415,7 @@
                    dialog.Close();
                    LoadEvent_ChangeCurHome(home);
                    LoadContentView();
                    HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock.CommonMethod.Current.ChangeCurrHome(home);
                };
            }
HDL_ON/UI/UI2/FuntionControlView/Video/View/ShowDialog.cs
@@ -36,6 +36,7 @@
        {
            if (dialog != null)
            {
                //防止二重界面
                dialog.Close();
            }
            dialog = new Dialog()
HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/CommonMethod.cs
@@ -5,12 +5,12 @@
namespace HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock
{
    /// <summary>
    /// 萤石视频门锁公共方法类
    /// </summary>
    public class CommonMethod
    {
        public CommonMethod()
        {
        }
        private Loading loading;
        private static CommonMethod commonMethod = null;
        public static CommonMethod Current
@@ -27,11 +27,28 @@
            }
        }
        #region  --------- 跳转到Android那边的方法(萤石视频门锁) --------
        /// <summary>
        /// 跳转到Android那边去
        /// 添加设备到云端
        /// <paramref name="devSerial"/>设备序列号</param>
        /// </summary>
        public void SkipAddDeviceActivity( )
        public void SkipAddDeviceActivity(string devSerial)
        {
            if (string.IsNullOrEmpty(devSerial)) return;
            new System.Threading.Thread(() =>
            {
                var list = VideDoorLockSend.Current.GetVideoDoorLockDeviceList(SPK.VideoDoorLock);
                if (list.Count > 0)
                {
                    var function = list.Find((o) => o.sid == devSerial);
                    if (function != null)
                    {
                        this.SaveFunctionFile(function);
                    }
                }
            })
            { IsBackground = true }.Start();
            //未实现
#if __IOS__
@@ -40,9 +57,8 @@
#endif
        }
        /// <summary>
        /// 跳转到Android(实时视频)那边去
        /// 打开实时视频画面
        /// </summary>
        /// <param name="deviceSerial">设备序列号</param>
        /// <param name="deviceId">设备id(云端上deviceId)</param>
@@ -62,21 +78,121 @@
            //jumpToEZRealPlayActivity(Shared.Application.Activity,  deviceId,  deviceSerial,  spk)
        }
        /// <summary>
        /// 跳转到Android(历史记录)那边去
        /// 浏览历史记录
        /// </summary>
        public void SkipRecordActivity()
        {
            //未实现
            //this.InitializationAndroidData();
            //
        }
        /// <summary>
        /// 跳转到Android(临时密码)那边去
        /// 临时密码开门
        /// </summary>
        public void SkipPSWActivity()
        {
            //jumpTempPasswordActivity(Application.Activity, deviceId);
        }
        /// <summary>
        /// 初始化萤石SDK(实际就是传参数,多次调用也没有影响)
        /// </summary>
        public void InitializationAndroidData(Action<bool> action)
        {
            bool isBool = true;
            this.SunThread(() =>
            {
                try
                {
                    //先获取萤石云子账号token
                    var ezChildAccessToken = VideDoorLockSend.Current.GetEZGetChildToken();
                    this.MainThread(() =>
                    {
                        if (string.IsNullOrEmpty(ezChildAccessToken))
                        {
                            //Token
                            isBool = false;
                            return;
                        }
                        Application.RunOnMainThread(() =>
                        {
#if __IOS__
                                //iOS
                                //初始化萤石云SDK,中文国内key、英文海外key 开发者账号使用应用包名申请的APPKEY,不同包名应用需配置不同的APPKEY
                                EZSDK.IOS.EZSDK.SharedInstance().InitLibWithAppKey("1aa98a90489b4838b966b57018b4b04b", "1aa98a90489b4838b966b57018b4b04b");
                                //1.设置所需河东的AccessToken和RefreshToken、域名地址
                                EZSDK.IOS.EZSDK.SharedInstance().SetHDlAccessToken(UserVideoDoorLockInfo.Current.LoginTokenString, UserVideoDoorLockInfo.Current.RefreshToken);
                                EZSDK.IOS.EZSDK.SharedInstance().SetRequestHttpsHostAndPlatform(OnAppConfig.Instance.RequestHttpsHost, 1, DB_ResidenceData.Instance.CurrentRegion.id);
                                //2.设置萤石子账号的AccessToken到SDK
                                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
                            //Android
                            //1.设置所需河东的token、域名地址
                            //2.设置萤石子账号的token
                            //3.打开摄像头设备列表页面
                            ((BaseActivity)Shared.Application.Activity).SetCamera(b =>
                            {
                                if (b)
                                {
                                    ((BaseActivity)Shared.Application.Activity).SetPermission(result =>
                                    {
                                        if (result)
                                        {
                                            Android.Content.Intent intent = new Android.Content.Intent();
                                            var bundle = new Android.OS.Bundle();
                                            //传递name参数为tinyphp
                                            bundle.PutString("EzChildAccessToken", ezChildAccessToken);
                                            bundle.PutString("HdlToken", UserInfo.Current.LoginTokenString);
                                            bundle.PutString("HdlrefreshToken", UserInfo.Current.RefreshToken);
                                            bundle.PutString("Url", OnAppConfig.Instance.RequestHttpsHost);
                                            bundle.PutString("EzvizAppKey", "1aa98a90489b4838b966b57018b4b04b");
                                            bundle.PutInt("Platform", 1);
                                            bundle.PutString("HomeId", DB_ResidenceData.Instance.CurrentRegion.id);
                                            intent.PutExtras(bundle);
                                            //intent.SetComponent(new Android.Content.ComponentName(Shared.Application.Activity, "com.videogo.MainActivity"));
                                            //Shared.Application.Activity.StartActivity(intent);
                                        }
                                    }, "android.permission.RECORD_AUDIO");
                                }
                            });
#endif
                        });
                    });
                }
                catch (Exception e)
                {
                }
                finally
                {
                    this.MainThread(() =>
                    {
                        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;
        }
        #endregion
        /// <summary>
        /// 萤石视频门锁的图标
        /// <param name="comerom">来自那里</param>
        /// </summary>
        public string GetVideoDoorLockIcon(Comerom comerom)
        {
@@ -90,6 +206,7 @@
            }
        }
        #region  --------- 功能文件保存,删除 --------
        /// <summary>
        /// 保存本地文件
        /// </summary>
@@ -113,47 +230,35 @@
            FunctionList.List.DeleteFunction(function);
            MainPage.Log($"文件删除->{function.name}-->{function.spk}");
        }
        #endregion
        /// <summary>
        /// 闪烁框
        /// 获取Loading对象
        /// </summary>
        /// <param name="frame">父视图</param>
        /// <param name="tipText">提示文本</param>
        /// <param name="closeTime">显示时间,默认是1s</param>
        public void ShowTip(FrameLayout frame, string tipText, int closeTime = 1)
        /// <returns></returns>
        public Loading Loading
        {
            Application.RunOnMainThread(() =>
            get
            {
                new Tip()
                if (loading == null)
                {
                    CloseTime = closeTime,
                    Text = tipText,
                    Direction = AMPopTipDirection.None,
                }.Show(frame);
            });
        }
                    loading = new Loading();
                }
                if (MainPage.BasePageView.ChildrenCount < 1)
                {
                    return loading;
                }
                View view = MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1);
                if (view is FrameLayout)
                {
                    ((FrameLayout)view).AddChidren(loading);
                }
                else if (view is PageLayout)
                {
                    ((PageLayout)view).AddChidren(loading);
                }
                return loading;
            }
        /// <summary>
        /// 信息提示窗口,自动关闭
        /// </summary>
        /// <param name="msg">提示错误文本</param>
        public void ShowTip(string msg, int time = 2)
        {
            Application.RunOnMainThread(() =>
            {
                new PublicAssmebly().TipMsgAutoClose(msg, false, time * 1000);
            });
        }
        /// <summary>
        /// 对话框
        /// </summary>
        public void ShowAlert()
        {
            Application.RunOnMainThread(() =>
            {
                new Alert("", "视频门锁一", "取消", "确定").Show();
            });
        }
        /// <summary>
        /// 获取萤石视频门锁列表
@@ -168,7 +273,90 @@
#endif
            return list;
        }
        #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>
@@ -186,6 +374,7 @@
            function,//功能
            collect,//收藏
            room,//房间
            push,//推送
        }
    }
}
HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/ObjectClass.cs
@@ -7,9 +7,9 @@
    }
    /// <summary>
    /// 用户信息(萤石视频门锁)
    /// 用户信息(萤石视频门锁)
    /// </summary>
    public class UserInfo
    public class UserVideoDoorLockInfo
    {
        /// <summary>
        /// 用户id
HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/StackTraceLog.cs
New file
@@ -0,0 +1,58 @@
using System;
using HDL_ON.UI.CSS;
using HDL_ON.UI.Music;
using Shared;
namespace HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock
{
    public class StackTraceLog
    {
        /// <summary>
        /// 堆叠跟踪日志
        /// </summary>
        public string msg;
        public StackTraceLog(string msg)
        {
            this.msg = msg;
        }
        public void Show()
        {
            Dialog dialog = new Dialog()
            {
                BackgroundColor = CSS_Color.textWhiteColor,
            };
            dialog.Show();
            TopView topView = new TopView();
            topView.topNameBtn.Text="错误日志信息";
            dialog.AddChidren(topView.TopFLayoutView());
            topView.clickBackBtn.MouseUpEventHandler += (sen, e) =>
            {
                dialog.Close();
            };
            var middleFl = new FrameLayout
            {
                Y = topView.fLayout.Bottom,
                Height = Application.GetRealHeight(H_W.H - H_W.T_Height),
            };
            dialog.AddChidren(middleFl);
            Button btnLogText = new Button
            {
                //TextSize = TextSize.Text14,
                TextColor = MusicColor.Text18Color,
                Width = Application.GetRealWidth(H_W.W - 16 - 16),
                Height = middleFl.Height,
                X = Application.GetRealWidth(16),
                Text = this.msg,
                TextAlignment = TextAlignment.TopLeft,
                IsMoreLines = true,
            };
            middleFl.AddChidren(btnLogText);
        }
    }
}
HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideDoorLockSend.cs
@@ -36,7 +36,8 @@
        /// </summary>
        /// <param name="function">当前的设备</param>
        /// <param name="action">回调结果</param>
        public void DelDevice(Function function, Action<bool> action)
        /// <param name="tipType">是否需要提示,默认提示</param>
        public void DelDevice(Function function, Action<bool> action, TipType tipType = TipType.flicker)
        {
            new Thread(() =>
            {
@@ -47,7 +48,7 @@
                    d.Add("deviceSerial", function.sid);//等同门锁序列号
                    d.Add("platform", 1);//平台
                    var responsePackNew = UI.Music.SendMethod.Current.RequestServerhomeId(d, NewAPI.Api_Post_DeleteDevice, "删除萤石门锁设备");
                    if (!this.DataChecking(responsePackNew))
                    if (!this.DataChecking(responsePackNew, tipType))
                    {
                        return;
                    }
@@ -68,6 +69,7 @@
        /// 获取门锁状态(萤石视频门锁)
        /// </summary>
        /// <param name="function">当前的设备</param>
        /// <param name="tipType">是否需要提示,默认提示</param>
        /// <param name="return">返回结果不会为null</param>
        public VideoDoorLockInfo GetVideoDoorLockState(Function function, TipType tipType = TipType.flicker)
        {
@@ -76,7 +78,7 @@
            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
            d.Add("deviceId", function.deviceId);
            var responsePackNew = UI.Music.SendMethod.Current.RequestServerhomeId(d, NewAPI.Api_Post_Lockstatus, "获取萤石视频门锁状态");
            if (!this.DataChecking(responsePackNew))
            if (!this.DataChecking(responsePackNew,tipType))
            {
                return new VideoDoorLockInfo();
            }
@@ -95,6 +97,7 @@
        /// 获取电池电量(萤石视频门锁)
        /// </summary>
        /// <param name="function">当前的设备</param>
        /// <param name="tipType">是否需要提示,默认提示</param>
        /// <param name="return">返回结果不会为null</param>
        public CellInfo GetCellValue(Function function, TipType tipType = TipType.flicker)
        {
@@ -102,7 +105,7 @@
            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
            d.Add("deviceId", function.deviceId);
            var responsePackNew = UI.Music.SendMethod.Current.RequestServerhomeId(d, NewAPI.Api_Post_Details, "获取萤石门锁设备电量");
            if (!this.DataChecking(responsePackNew))
            if (!this.DataChecking(responsePackNew,tipType))
            {
                return new CellInfo();
            }
@@ -119,21 +122,22 @@
        /// 获取门锁用户列表(萤石视频门锁)
        /// </summary>
        /// <param name="function">当前的设备</param>
        ///    /// <param name="return">返回结果不会为null</param>
        public List<UserInfo> GetVideoDoorLockUserListInfo(Function function, TipType tipType = TipType.flicker)
        /// <param name="tipType">是否需要提示,默认提示</param>
        /// <param name="return">返回结果不会为null</param>
        public List<UserVideoDoorLockInfo> GetVideoDoorLockUserListInfo(Function function, TipType tipType = TipType.flicker)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
            d.Add("deviceId", function.deviceId);
            var responsePackNew = UI.Music.SendMethod.Current.RequestServerhomeId(d, NewAPI.Api_Post_UserList, "获取萤石门锁用户列表");
            if (!this.DataChecking(responsePackNew))
            if (!this.DataChecking(responsePackNew, tipType))
            {
                return new List<UserInfo>();
                return new List<UserVideoDoorLockInfo>();
            }
            var list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<UserInfo>>(responsePackNew.Data.ToString());
            var list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<UserVideoDoorLockInfo>>(responsePackNew.Data.ToString());
            if (list == null)
            {
                return new List<UserInfo>();
                return new List<UserVideoDoorLockInfo>();
            }
            return list;
        }
@@ -141,15 +145,16 @@
        /// 获取门锁设备列表(萤石视频门锁)
        /// </summary>
        /// <param name="spk">指定spk获取</param>
        /// <returns></returns>
        public List<Function> GetVideoDoorLockDeviceList(string spk)
        /// <param name="tipType">是否需要提示,默认提示</param>
        /// <returns>返回结果不会为null</returns>
        public List<Function> GetVideoDoorLockDeviceList(string spk, TipType tipType = TipType.flicker)
        {
            Dictionary<string, object> d = new Dictionary<string, object>();
            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
            d.Add("spk", spk);
            var responsePackNew = UI.Music.SendMethod.Current.RequestServerhomeId(d, NewAPI.Api_Post_UserList, "获取萤石门锁设备列表");
            if (!this.DataChecking(responsePackNew))
            if (!this.DataChecking(responsePackNew, tipType))
            {
                return new List<Function>();
            }
@@ -161,12 +166,26 @@
            return list;
        }
        /// <summary>
        /// 先获取萤石云子账号token
        /// </summary>
        /// <param name="tipType">是否需要提示,默认提示</param>
        public string GetEZGetChildToken(TipType tipType = TipType.flicker)
        {
            //先获取萤石云子账号token
            var responsePackNew = new HttpServerRequest().EZGetChildToken();
            if (!this.DataChecking(responsePackNew, tipType))
            {
                return "";
            }
            return responsePackNew.Data.ToString();
        }
        /// <summary>
        /// 检验数据回复成功或者失败
        /// </summary>
        /// <param name="responsePackNew">回复数据对象</param>
        /// <param name="tipType">是否需要提示,默认提示</param>
        /// <param name="tipType">是否需要提示</param>
        /// <returns></returns>
        private bool DataChecking(ResponsePackNew responsePackNew, TipType tipType = TipType.flicker)
        private bool DataChecking(ResponsePackNew responsePackNew, TipType tipType)
        {
            if (responsePackNew.Data == null || responsePackNew.Code != "0" || responsePackNew.Data.ToString() == "")
            {
@@ -175,14 +194,17 @@
                    if (responsePackNew == null)
                    {
                        responsePackNew = new ResponsePackNew { message = "没回复,请确认网络是否正常.", Code = "-1", };
                    }
                    //new Tip()
                    //{
                    //    CloseTime = 1,
                    //    Text = responsePackNew.message + "(" + responsePackNew.Code + ")",
                    //    Direction = AMPopTipDirection.None,
                    //}.Show(MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1));
                    Application.RunOnMainThread(() =>
                    {
                        //new Tip()
                        //{
                        //    CloseTime = 1,
                        //    Text = responsePackNew.message + "(" + responsePackNew.Code + ")",
                        //    Direction = AMPopTipDirection.None,
                        //}.Show(MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1));
                        CommonMethod.Current.ShowTip(responsePackNew.message + "(" + responsePackNew.Code + ")");
                    });
                }
                return false;
            }
HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorLockPage.cs
@@ -76,7 +76,7 @@
        /// <summary>
        /// 表示来自那个界面
        /// </summary>
        private UI2.FuntionControlView.VideoDoorLock.CommonMethod.Comerom Comerom;
        private CommonMethod.Comerom comerom;
        /// <summary>
        /// 删除设备后需要更新界面的回调
        /// </summary>
@@ -90,12 +90,12 @@
        /// <param name="function">设备</param>
        /// <param name="btnDeviceName">上一级界面的设备名字控件</param>
        /// <param name="btnRoomName">上一级界面的房间名字控件</param> 
        public VideoDoorLockPage(Function function, Button btnDeviceName, Button btnRoomName, UI2.FuntionControlView.VideoDoorLock.CommonMethod.Comerom comerom, Action action)
        public VideoDoorLockPage(Function function, Button btnDeviceName, Button btnRoomName, CommonMethod.Comerom comerom, Action action)
        {
            this.device = function;
            this.btnDeviceName = btnDeviceName;
            this.btnRoomName = btnRoomName;
            this.Comerom = comerom;
            this.comerom = comerom;
            this.action = action;
        }
@@ -108,8 +108,6 @@
            this.EventListener();
            //读取数据
            this.ReadData();
        }
@@ -277,8 +275,6 @@
            this.topView.clickBackBtn.MouseUpEventHandler += (sender, e) =>
            {
                RemoveFromParent();
            };
            //设置
            this.topView.clickSetBtn.MouseUpEventHandler += (sender, e) =>
@@ -336,16 +332,14 @@
        /// </summary>
        private void ReadData()
        {
            Loading loading = new Loading();
            this.AddChidren(loading);
            loading.Start();
            new System.Threading.Thread(() =>
            CommonMethod.Current.Loading.Start();
            CommonMethod.Current.SunThread(() =>
            {
                try
                {
                    var videoDoorLockInfo = UI2.FuntionControlView.VideoDoorLock.VideDoorLockSend.Current.GetVideoDoorLockState(this.device);
                    var cellInfo = UI2.FuntionControlView.VideoDoorLock.VideDoorLockSend.Current.GetCellValue(this.device);
                    Application.RunOnMainThread(() =>
                    var videoDoorLockInfo = VideDoorLockSend.Current.GetVideoDoorLockState(this.device);
                    var cellInfo = VideDoorLockSend.Current.GetCellValue(this.device);
                    CommonMethod.Current.MainThread(() =>
                    {
                        //this.cellDiyArcSeekBar.Progress = i;
                        //更新电量值
@@ -358,11 +352,10 @@
                {
                    Application.RunOnMainThread(() =>
                    {
                        loading.Hide();
                        CommonMethod.Current.Loading.Hide();
                    });
                }
            })
            { IsBackground = true }.Start();
            });
        }
        /// <summary>