using System; using System.Threading; using HDL_ON.DAL.Server; using HDL_ON.UI.CSS; using Shared; namespace HDL_ON.UI { /// /// 增加子账号界面 /// public partial class AddMemberScanPage : FrameLayout { FrameLayout bodyView; Button btnAddMember; Button btnScan; EditText etMemberAccount; EditText etMemberName; /// /// 人脸照片数据 /// string base64string; Action backAction; public AddMemberScanPage(Action action) { backAction = action; bodyView = this; } public void LoadPage() { bodyView.BackgroundColor = CSS_Color.MainBackgroundColor; new TopViewDiv(bodyView, Language.StringByID(StringId.AddMember)).LoadTopView(); if (Entity.DB_ResidenceData.Instance.SupportFacePass) { var btnMemberName = new Button() { Y = Application.GetRealHeight(70), X = Application.GetRealWidth(16), Height = Application.GetRealHeight(32), TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.TextFontSize, TextAlignment = TextAlignment.CenterLeft, TextID = StringId.MemberName, }; bodyView.AddChidren(btnMemberName); etMemberName = new EditText() { Y = btnMemberName.Bottom, X = Application.GetRealWidth(16), Width = Application.GetRealWidth(356), Height = Application.GetRealHeight(40), TextColor = CSS_Color.TextualColor, TextSize = CSS_FontSize.SubheadingFontSize, TextAlignment = TextAlignment.CenterLeft, PlaceholderText = Language.StringByID(StringId.PleaseEnterContent), PlaceholderTextColor = CSS_Color.PromptingColor2 }; bodyView.AddChidren(etMemberName); var btnLine = new Button() { Y = etMemberName.Bottom, Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth(343), Height = Application.GetRealHeight(1), BackgroundColor = CSS_Color.DividingLineColor, }; bodyView.AddChidren(btnLine); var btnTitle = new Button() { Y = btnLine.Bottom + Application.GetRealHeight(20), X = Application.GetRealWidth(16), Height = Application.GetRealHeight(32), TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.TextFontSize, TextAlignment = TextAlignment.CenterLeft, TextID = StringId.MemberAccount, }; bodyView.AddChidren(btnTitle); etMemberAccount = new EditText() { Y = btnTitle.Bottom, X = Application.GetRealWidth(16), Width = Application.GetRealWidth(356), Height = Application.GetRealHeight(40), TextColor = CSS_Color.TextualColor, TextSize = CSS_FontSize.SubheadingFontSize, TextAlignment = TextAlignment.CenterLeft, PlaceholderText = Language.StringByID(StringId.PleaseEnterContent), PlaceholderTextColor = CSS_Color.PromptingColor2 }; bodyView.AddChidren(etMemberAccount); var btnLine1 = new Button() { Y = etMemberAccount.Bottom, Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth(343), Height = Application.GetRealHeight(1), BackgroundColor = CSS_Color.DividingLineColor, }; bodyView.AddChidren(btnLine1); #region 人脸管理 var btnMemberFaceTitle = new Button() { Y = btnLine1.Bottom + Application.GetRealHeight(20), X = Application.GetRealWidth(16), Height = Application.GetRealHeight(32), TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.TextFontSize, TextAlignment = TextAlignment.CenterLeft, TextID = StringId.MemberFace, }; bodyView.AddChidren(btnMemberFaceTitle); var btnAddFace = new Button() { Gravity = Gravity.CenterHorizontal, Y = btnMemberFaceTitle.Bottom, Width = Application.GetRealWidth(120), Height = Application.GetRealWidth(120), Radius = (uint)Application.GetRealWidth(22), BorderWidth = 0, UnSelectedImagePath = "PersonalCenter/FacePassage/FaceIcon.png", TextColor = CSS_Color.MainBackgroundColor, TextSize = CSS_FontSize.SubheadingFontSize, IsBold = true, TextAlignment = TextAlignment.Center, }; bodyView.AddChidren(btnAddFace); EventHandler eFaceHandler = (sender, e) => { Application.HideSoftInput(); if (OnAppConfig.Instance.FaceManagementTip) { OnAppConfig.Instance.FaceManagementTip = true; OnAppConfig.Instance.SaveConfig(); LoadPictureOptionView(btnAddFace); return; } Dialog dialog = new Dialog() { BackgroundColor = CSS_Color.DialogTransparentColor1, }; FrameLayout contentView = new FrameLayout() { Gravity = Gravity.Center, Width = Application.GetRealWidth(270), Height = Application.GetRealHeight(192), BackgroundColor = CSS.CSS_Color.MainBackgroundColor, BorderColor = 0x00000000, BorderWidth = 0, Radius = (uint)Application.GetMinRealAverage(10), }; dialog.AddChidren(contentView); Button btnTitle2 = new Button() { Y = Application.GetRealHeight(16), Height = Application.GetRealHeight(30), TextColor = CSS_Color.MainColor, TextSize = CSS_FontSize.SubheadingFontSize, TextAlignment = TextAlignment.Center, IsBold = true, TextID = StringId.FaceProtocolPrompt, }; contentView.AddChidren(btnTitle2); Button btnMsg = new Button() { Gravity = Gravity.CenterHorizontal, Height = Application.GetRealHeight(35), Y = btnTitle2.Bottom, Width = Application.GetRealHeight(200), TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.TextualColor, TextSize = CSS_FontSize.PromptFontSize_FirstLevel, Text = " 为保护您的个人隐私权益,特向您通知并申请明确同意授权。请你仔细阅读", IsMoreLines = true, }; if(Language.CurrentLanguage != "Chinese") { btnMsg.Text = " In order to protect your personal privacy rights, we hereby notify you and apply for explicit consent authorization. Please read it carefully"; } contentView.AddChidren(btnMsg); Button btnMsg1 = new Button() { Gravity = Gravity.CenterHorizontal, Height = Application.GetRealHeight(15), Y = btnMsg.Bottom, Width = Application.GetRealHeight(200), TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.MainColor, TextSize = CSS_FontSize.PromptFontSize_FirstLevel, Text = " 《On Pro人脸信息采集协议》", IsMoreLines = true, }; if (Language.CurrentLanguage != "Chinese") { btnMsg1.Text = " 'On Pro Face Information Collection Protocol'"; } contentView.AddChidren(btnMsg1); Button btnMsg2 = new Button() { Gravity = Gravity.CenterHorizontal, Height = Application.GetRealHeight(35), Y = btnMsg1.Bottom, Width = Application.GetRealHeight(200), TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.TextualColor, TextSize = CSS_FontSize.PromptFontSize_FirstLevel, Text = " 若同意该协议,请点击【同意】按键,表示您已经理解并同意人脸信息采集协议。", IsMoreLines = true, }; if (Language.CurrentLanguage != "Chinese") { btnMsg2.Text = " If you agree to this agreement, please click the [Agree] button to indicate that you have understood and agreed to the face information collection agreement."; } contentView.AddChidren(btnMsg2); Button btnLine2 = new Button() { Y = Application.GetRealHeight(149), Height = Application.GetRealHeight(1), Width = Application.GetRealWidth(270 / 2), BackgroundColor = CSS.CSS_Color.DividingLineColor, }; contentView.AddChidren(btnLine2); Button btnCancel = new Button() { Y = btnLine2.Bottom, Width = Application.GetRealWidth(135), Height = Application.GetRealHeight(43), TextAlignment = TextAlignment.Center, TextColor = CSS_Color.TextualColor, TextSize = CSS_FontSize.SubheadingFontSize, //SelectedTextColor = CSS_Color.MainBackgroundColor, //SelectedBackgroundColor = CSS_Color.MainColor, TextID = StringId.Disagree, }; contentView.AddChidren(btnCancel); Button btnConfirm = new Button() { X = btnCancel.Right, Y = btnLine2.Y, Width = Application.GetRealWidth(135), Height = Application.GetRealHeight(45), TextAlignment = TextAlignment.Center, //TextColor = CSS_Color.TextualColor, TextSize = CSS_FontSize.SubheadingFontSize, TextColor = CSS_Color.MainBackgroundColor, BackgroundColor = CSS_Color.MainColor, TextID = StringId.Agree, }; contentView.AddChidren(btnConfirm); //例:右下圆角 大小为50 int mRectCornerID = HDLUtils.RectCornerBottomRight; btnConfirm.SetCornerWithSameRadius((uint)Application.GetMinRealAverage(10), mRectCornerID); dialog.Show(); btnCancel.MouseUpEventHandler += (sender2, e2) => { dialog.Close(); }; btnMsg1.MouseUpEventHandler += (sender2, e2) => { string url = "https://developer.hdlcontrol.com/人脸信息采集协议.html"; if (Language.CurrentLanguage != "Chinese") { url = "https://developer.hdlcontrol.com/Face information collection protocol.html"; } new WebViewDialog().LoadPage("人脸信息采集协议", url); dialog.Close(); }; btnConfirm.MouseUpEventHandler = (sender2, e2) => { dialog.Close(); OnAppConfig.Instance.FaceManagementTip = true; OnAppConfig.Instance.SaveConfig(); LoadPictureOptionView(btnAddFace); }; }; btnAddFace.MouseUpEventHandler = eFaceHandler; #endregion btnAddMember = new Button() { Gravity = Gravity.CenterHorizontal, Y = btnAddFace.Bottom + Application.GetRealHeight(30), Width = Application.GetRealWidth(220), Height = Application.GetRealWidth(44), Radius = (uint)Application.GetRealWidth(22), BorderWidth = 0, BorderColor = 0x00000000, BackgroundColor = CSS_Color.MainColor, TextColor = CSS_Color.MainBackgroundColor, TextSize = CSS_FontSize.SubheadingFontSize, IsBold = true, TextAlignment = TextAlignment.Center, TextID = StringId.Confirm, }; bodyView.AddChidren(btnAddMember); btnScan = new Button() { Y = btnTitle.Bottom, Width = Application.GetRealWidth(40), Height = Application.GetRealWidth(40), X = Application.GetRealWidth(310), UnSelectedImagePath = "Public/Scan.png" }; bodyView.AddChidren(btnScan); } else { var btnTitle2 = new Button() { Y = Application.GetRealHeight(70), X = Application.GetRealWidth(16), Height = Application.GetRealHeight(32), TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.TextFontSize, TextAlignment = TextAlignment.CenterLeft, TextID = StringId.NewMemberAccount, }; bodyView.AddChidren(btnTitle2); etMemberAccount = new EditText() { Y = btnTitle2.Bottom, X = Application.GetRealWidth(16), Width = Application.GetRealWidth(356), Height = Application.GetRealHeight(40), TextColor = CSS_Color.TextualColor, TextSize = CSS_FontSize.SubheadingFontSize, TextAlignment = TextAlignment.CenterLeft, PlaceholderText = Language.StringByID(StringId.PleaseEnterContent), PlaceholderTextColor = CSS_Color.PromptingColor2 }; bodyView.AddChidren(etMemberAccount); var btnLine = new Button() { Y = etMemberAccount.Bottom, Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth(343), Height = Application.GetRealHeight(1), BackgroundColor = CSS_Color.DividingLineColor, }; bodyView.AddChidren(btnLine); btnAddMember = new Button() { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealHeight(244), Width = Application.GetRealWidth(220), Height = Application.GetRealWidth(44), Radius = (uint)Application.GetRealWidth(22), BorderWidth = 0, BorderColor = 0x00000000, BackgroundColor = CSS_Color.MainColor, TextColor = CSS_Color.MainBackgroundColor, TextSize = CSS_FontSize.SubheadingFontSize, IsBold = true, TextAlignment = TextAlignment.Center, TextID = StringId.Confirm, }; bodyView.AddChidren(btnAddMember); btnScan = new Button() { Y = btnAddMember.Bottom, Height = Application.GetRealHeight(44), TextAlignment = TextAlignment.Center, TextColor = CSS_Color.MainColor, TextSize = CSS_FontSize.TextFontSize, TextID = StringId.ScanQRCoden, }; bodyView.AddChidren(btnScan); } LoadEventList(); } void TipDivMsg(string msg) { var tipBodyView = new FrameLayout(); bodyView.AddChidren(tipBodyView); var msgView = new FrameLayout() { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealHeight(167), Width = Application.GetRealWidth(210), Height = Application.GetRealHeight(62), Radius = (uint)Application.GetRealWidth(8), BorderWidth = 0, BorderColor = 0x00000000, BackgroundColor = 0xFF333333, }; tipBodyView.AddChidren(msgView); var btnMsg = new Button() { Gravity = Gravity.Center, Width = Application.GetRealWidth(186), Height = Application.GetRealHeight(42), TextColor = CSS_Color.MainBackgroundColor, TextSize = CSS_FontSize.TextFontSize, TextAlignment = TextAlignment.Center, Text = msg, IsMoreLines = true, }; msgView.AddChidren(btnMsg); new System.Threading.Thread(() => { System.Threading.Thread.Sleep(1200); Application.RunOnMainThread(() => { tipBodyView.RemoveAll(); tipBodyView.RemoveFromParent(); }); }) { IsBackground = true }.Start(); } const int imageHeight = 400; /// /// 加载图标选择选项 /// void LoadPictureOptionView(Button btnAddFace) { var pView = new FrameLayout() { BackgroundColor = CSS_Color.DialogTransparentColor1, }; bodyView.AddChidren(pView); var pictureOptionView = new FrameLayout() { Y = Application.GetRealHeight(445 + 50), Height = Application.GetRealHeight(250), AnimateSpeed = 0.3f, Animate = Animate.DownToUp, }; pView.AddChidren(pictureOptionView); var optionView = new VerticalScrolViewLayout() { Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth(343), Height = Application.GetRealHeight(100), BackgroundColor = CSS_Color.MainBackgroundColor, Radius = (uint)Application.GetRealWidth(12), }; pictureOptionView.AddChidren(optionView); var btnTakePicture = new Button() { Height = Application.GetRealHeight(50), TextAlignment = TextAlignment.Center, TextColor = CSS_Color.TextualColor, SelectedTextColor = CSS_Color.MainColor, TextSize = CSS_FontSize.SubheadingFontSize, TextID = StringId.TakePicture, }; optionView.AddChidren(btnTakePicture); optionView.AddChidren(new Button() { Height = Application.GetRealHeight(1), Width = Application.GetRealWidth(343), BackgroundColor = CSS_Color.DividingLineColor }); var btnAlbum = new Button() { Height = Application.GetRealHeight(50), TextAlignment = TextAlignment.Center, TextColor = CSS_Color.TextualColor, SelectedTextColor = CSS_Color.MainColor, TextSize = CSS_FontSize.SubheadingFontSize, TextID = StringId.Album, }; optionView.AddChidren(btnAlbum); optionView.AddChidren(new Button() { Height = Application.GetRealHeight(1), Width = Application.GetRealWidth(343), BackgroundColor = CSS_Color.DividingLineColor }); var btnCancel = new Button() { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealHeight(8) + optionView.Bottom, Width = Application.GetRealWidth(343), Height = Application.GetRealHeight(50), BackgroundColor = CSS_Color.MainBackgroundColor, Radius = (uint)Application.GetRealWidth(12), TextID = StringId.Cancel, TextColor = CSS_Color.WarningColor, TextSize = CSS_FontSize.SubheadingFontSize, }; pictureOptionView.AddChidren(btnCancel); pictureOptionView.MouseUpEventHandler = (sender, e) => { pictureOptionView.Parent.RemoveFromParent(); }; pView.MouseUpEventHandler = (sender, e) => { pictureOptionView.Parent.RemoveFromParent(); }; btnCancel.MouseUpEventHandler = (sender, e) => { pictureOptionView.Parent.RemoveFromParent(); }; btnTakePicture.MouseDownEventHandler = (sender, e) => { btnTakePicture.IsSelected = true; }; btnTakePicture.MouseUpEventHandler = (sender, e) => { btnTakePicture.IsSelected = false; var imageName = Guid.NewGuid().ToString(); CropImage.TakePicture((imagePath) => { if (imagePath != null) { var imageBytes = getFaceImageBytes(imagePath); btnAddFace.ImageBytes = imageBytes; base64string = Convert.ToBase64String(imageBytes); } }, imageName, 6, 6, imageHeight); pictureOptionView.Parent.RemoveFromParent(); }; btnAlbum.MouseDownEventHandler = (sender, e) => { btnAlbum.IsSelected = true; }; btnAlbum.MouseUpEventHandler = (sender, e) => { btnAlbum.IsSelected = false; //从相册选择图片裁剪 var imageName = Guid.NewGuid().ToString(); //var imageName = scene.sid; CropImage.SelectPicture((imagePath) => { if (imagePath != null) { var imageBytes = getFaceImageBytes(imagePath); btnAddFace.ImageBytes = imageBytes; base64string = Convert.ToBase64String(imageBytes); } }, imageName, 6, 6, imageHeight); pictureOptionView.Parent.RemoveFromParent(); }; } /// /// 获取本地选取的人脸数据 /// /// /// byte[] getFaceImageBytes(string selectImagePath) { var imageBytes = Shared.IO.FileUtils.ReadFile(selectImagePath); System.IO.File.Delete(selectImagePath); return imageBytes; } } }