using System; using HDL_ON.Common; using HDL_ON.DAL.Server; using HDL_ON.Entity; using HDL_ON.UI.CSS; using Shared; namespace HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock { /// /// 萤石视频门锁-人脸开锁设置页面 /// public class UnlockSettingFacePage : FrameLayout { FrameLayout bodyView; bool faceUnlockSwitch; Function device; public UnlockSettingFacePage(Function function) { bodyView = this; device = function; } public void LoadPage() { var faceUnlockSetup = new FaceUnlockSetupObj(); new TopViewDiv(bodyView, Language.StringByID(StringId.FaceUnlockSetting)).LoadTopView(); var contentView = new VerticalScrolViewLayout() { Y = Application.GetRealHeight(64), Height = Application.GetRealHeight(600), ScrollEnabled = false, BackgroundColor = CSS_Color.BackgroundColor, }; bodyView.AddChidren(contentView); #region 人脸开锁 var faceUnlockView = new FrameLayout() { Height = Application.GetRealHeight(74), BackgroundColor = CSS_Color.MainBackgroundColor, }; contentView.AddChidren(faceUnlockView); var btnFaceUnlockText = new Button() { X = Application.GetRealWidth(16), Y = Application.GetRealHeight(7), Height = Application.GetRealHeight(37), TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.SubheadingFontSize, TextID = StringId.FaceUnlock, }; faceUnlockView.AddChidren(btnFaceUnlockText); var btnFaceUnlockTipText = new Button() { X = Application.GetRealWidth(16), Y = btnFaceUnlockText.Bottom, Width = Application.GetRealWidth(339), Height = Application.GetRealHeight(37), TextAlignment = TextAlignment.TopLeft, TextColor = CSS_Color.PromptingColor1, TextSize = CSS_FontSize.PromptFontSize_FirstLevel, IsMoreLines = true, TextID = StringId.FaceUnlockOpenTip }; faceUnlockView.AddChidren(btnFaceUnlockTipText); var btnFaceUnlockSwitchIcon = new Button() { X = Application.GetRealWidth(322), Y = Application.GetRealHeight(8), Width = Application.GetMinRealAverage(36), Height = Application.GetMinRealAverage(36), UnSelectedImagePath = "Public/Switch_2.png", SelectedImagePath = "Public/SwitchOn_2.png", IsSelected = faceUnlockSwitch, }; faceUnlockView.AddChidren(btnFaceUnlockSwitchIcon); var waitPage = new Loading(); bodyView.AddChidren(waitPage); waitPage.Start(""); #endregion contentView.AddChidren(new Button() { Height = Application.GetRealHeight(8), BackgroundColor = CSS_Color.BackgroundColor, }); var view = new VerticalScrolViewLayout() { Height = Application.GetRealHeight(300), }; contentView.AddChidren(view); btnFaceUnlockSwitchIcon.MouseUpEventHandler = (sender, e) => { waitPage.Start(""); bool changeState = false; if (!btnFaceUnlockSwitchIcon.IsSelected) { btnFaceUnlockSwitchIcon.IsSelected = true; changeState = true; } new System.Threading.Thread(() => { try { var pack = ApiUtlis.Ins.HttpRequest.SetFaceUnlockCfg(device.deviceId, changeState, faceUnlockSetup.mode); if (pack != null && pack.Code == StateCode.SUCCESS) { Application.RunOnMainThread(() => { //更新界面 btnFaceUnlockSwitchIcon.IsSelected = changeState; loadSubView(view, faceUnlockSetup); }); } else { //失败提示 Application.RunOnMainThread(() => { if (!string.IsNullOrEmpty(pack.message)) { var tip = new Tip() { MaxWidth = Application.GetRealWidth(300), Text = $"{pack.message}({pack.Code})", CloseTime = 3, Direction = AMPopTipDirection.None }; tip.Show(MainPage.BaseView); } }); } } catch (Exception ex) { MainPage.Log($"btnFaceUnlockSwitchIcon error : {ex.Message}"); } finally { Application.RunOnMainThread(() => { waitPage.Hide(); }); } }) { IsBackground = true }.Start(); }; new System.Threading.Thread(() => { try { var pack = ApiUtlis.Ins.HttpRequest.GetFaceUnlockCfg(device.deviceId); if (pack != null && pack.Code == StateCode.SUCCESS) { Application.RunOnMainThread(() => { //更新界面 faceUnlockSetup = Newtonsoft.Json.JsonConvert.DeserializeObject(pack.Data.ToString()); btnFaceUnlockSwitchIcon.IsSelected = faceUnlockSetup.enabled; loadSubView(view, faceUnlockSetup); }); } else { //失败提示 Application.RunOnMainThread(() => { if (!string.IsNullOrEmpty(pack.message)) { var tip = new Tip() { MaxWidth = Application.GetRealWidth(300), Text = $"{pack.message}({pack.Code})", CloseTime = 3, Direction = AMPopTipDirection.None }; tip.Show(MainPage.BaseView); } }); } } catch (Exception ex) { MainPage.Log($"UnlockSettingPage error : {ex.Message}"); } finally { Application.RunOnMainThread(() => { waitPage.Hide(); }); } }) { IsBackground = true }.Start(); } void loadSubView(VerticalScrolViewLayout view, FaceUnlockSetupObj faceUnlockSetup) { if (faceUnlockSetup.enabled) { #region 触发方式 TriggerMode var triggerModeView = new FrameLayout() { Height = Application.GetRealHeight(50), BackgroundColor = CSS.CSS_Color.MainBackgroundColor, }; view.AddChidren(triggerModeView); var btnTriggerModeRight = new Button() { X = Application.GetRealWidth(339), Gravity = Gravity.CenterVertical, Width = Application.GetMinRealAverage(16), Height = Application.GetMinRealAverage(16), UnSelectedImagePath = "Public/Right.png", }; triggerModeView.AddChidren(btnTriggerModeRight); var btnTriggerModeStateText = new Button() { X = Application.GetRealWidth(100), Width = Application.GetRealWidth(223), TextAlignment = TextAlignment.CenterRight, TextSize = CSS_FontSize.TextFontSize, TextColor = CSS_Color.PromptingColor1, }; triggerModeView.AddChidren(btnTriggerModeStateText); btnTriggerModeStateText.TextID = faceUnlockSetup.mode == 0 ? StringId.AutomaticTriggering : StringId.ManualTriggering; var btnTriggerModeText = new Button() { X = Application.GetRealWidth(16), TextSize = CSS_FontSize.SubheadingFontSize, TextColor = CSS_Color.FirstLevelTitleColor, TextAlignment = TextAlignment.CenterLeft, TextID = StringId.TriggerMode, }; triggerModeView.AddChidren(btnTriggerModeText); btnTriggerModeText.MouseUpEventHandler = (sender, e) => { var page = new VideoDoorlockFaceUnlockTriggerSettingPage(device, faceUnlockSetup); MainPage.BasePageView.AddChidren(page); page.LoadPage(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; #endregion view.AddChidren(new Button { Height = 1, BackgroundColor = CSS_Color.DividingLineColor }); } #region 人脸录入帮助 var faceEntryHelpView = new FrameLayout() { Height = Application.GetRealHeight(50), BackgroundColor = CSS.CSS_Color.MainBackgroundColor, }; view.AddChidren(faceEntryHelpView); var btnFaceEntryHelpRight = new Button() { X = Application.GetRealWidth(339), Gravity = Gravity.CenterVertical, Width = Application.GetMinRealAverage(16), Height = Application.GetMinRealAverage(16), UnSelectedImagePath = "Public/Right.png", }; faceEntryHelpView.AddChidren(btnFaceEntryHelpRight); var btnFaceEntryHelpText = new Button() { X = Application.GetRealWidth(16), TextSize = CSS_FontSize.SubheadingFontSize, TextColor = CSS_Color.FirstLevelTitleColor, TextAlignment = TextAlignment.CenterLeft, TextID = StringId.FaceEntryHelp, }; faceEntryHelpView.AddChidren(btnFaceEntryHelpText); btnFaceEntryHelpText.MouseUpEventHandler = (sender, e) => { var page = new VideoDoorlockFaceUnlockHelpPage(); MainPage.BasePageView.AddChidren(page); page.LoadPage(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; #endregion } } /// /// 人脸开锁配置 /// public class FaceUnlockSetupObj { /// /// 开关 /// public bool enabled = false; /// /// 解锁方式 0-自动 1-手动 /// public int mode; /// /// 灵敏度 0-高 1-低 /// public int sensitivity; } }