| | |
| | | Button btnAddMember; |
| | | Button btnScan; |
| | | EditText etMemberAccount; |
| | | EditText etMemberName; |
| | | /// <summary> |
| | | /// 人脸照片数据 |
| | | /// </summary> |
| | | string base64string; |
| | | |
| | | Action backAction; |
| | | |
| | |
| | | bodyView.BackgroundColor = CSS_Color.MainBackgroundColor; |
| | | new TopViewDiv(bodyView, Language.StringByID(StringId.AddMember)).LoadTopView(); |
| | | |
| | | |
| | | if (Entity.DB_ResidenceData.Instance.SupportFacePass) |
| | | { |
| | | var btnMemberName = new Button() |
| | |
| | | }; |
| | | bodyView.AddChidren(btnMemberName); |
| | | |
| | | var etMemberName = new EditText() |
| | | etMemberName = new EditText() |
| | | { |
| | | Y = btnMemberName.Bottom, |
| | | X = Application.GetRealWidth(16), |
| | |
| | | }; |
| | | bodyView.AddChidren(btnMemberFaceTitle); |
| | | |
| | | |
| | | |
| | | var btnAddFace = new Button() |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | |
| | | |
| | | EventHandler<MouseEventArgs> eFaceHandler = (sender, e) => |
| | | { |
| | | Application.HideSoftInput(); |
| | | if (OnAppConfig.Instance.FaceManagementTip) |
| | | { |
| | | OnAppConfig.Instance.FaceManagementTip = true; |
| | | OnAppConfig.Instance.SaveConfig(); |
| | | LoadPictureOptionView(); |
| | | LoadPictureOptionView(btnAddFace); |
| | | return; |
| | | } |
| | | |
| | |
| | | }; |
| | | dialog.AddChidren(contentView); |
| | | |
| | | Button btnTitle = new Button() |
| | | Button btnTitle2 = new Button() |
| | | { |
| | | Y = Application.GetRealHeight(16), |
| | | Height = Application.GetRealHeight(30), |
| | |
| | | IsBold = true, |
| | | TextID = StringId.FaceProtocolPrompt, |
| | | }; |
| | | contentView.AddChidren(btnTitle); |
| | | contentView.AddChidren(btnTitle2); |
| | | |
| | | Button btnMsg = new Button() |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Height = Application.GetRealHeight(35), |
| | | Y = btnTitle.Bottom, |
| | | Y = btnTitle2.Bottom, |
| | | Width = Application.GetRealHeight(200), |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextColor = CSS_Color.TextualColor, |
| | |
| | | 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() |
| | |
| | | Text = " 《On Pro人脸信息采集协议》", |
| | | IsMoreLines = true, |
| | | }; |
| | | if (Language.CurrentLanguage != "Chinese") |
| | | { |
| | | btnMsg1.Text = " 'On Pro Face Information Collection Protocol'"; |
| | | } |
| | | |
| | | contentView.AddChidren(btnMsg1); |
| | | |
| | | Button btnMsg2 = new Button() |
| | |
| | | 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 btnLine = new Button() |
| | | Button btnLine2 = new Button() |
| | | { |
| | | Y = Application.GetRealHeight(149), |
| | | Height = Application.GetRealHeight(1), |
| | | Width = Application.GetRealWidth(270 / 2), |
| | | BackgroundColor = CSS.CSS_Color.DividingLineColor, |
| | | }; |
| | | contentView.AddChidren(btnLine); |
| | | contentView.AddChidren(btnLine2); |
| | | |
| | | Button btnCancel = new Button() |
| | | { |
| | | Y = btnLine.Bottom, |
| | | Y = btnLine2.Bottom, |
| | | Width = Application.GetRealWidth(135), |
| | | Height = Application.GetRealHeight(43), |
| | | TextAlignment = TextAlignment.Center, |
| | |
| | | Button btnConfirm = new Button() |
| | | { |
| | | X = btnCancel.Right, |
| | | Y = btnLine.Y, |
| | | Y = btnLine2.Y, |
| | | Width = Application.GetRealWidth(135), |
| | | Height = Application.GetRealHeight(45), |
| | | TextAlignment = TextAlignment.Center, |
| | |
| | | btnConfirm.SetCornerWithSameRadius((uint)Application.GetMinRealAverage(10), mRectCornerID); |
| | | dialog.Show(); |
| | | |
| | | btnCancel.MouseUpEventHandler += (sender, e) => |
| | | btnCancel.MouseUpEventHandler += (sender2, e2) => |
| | | { |
| | | dialog.Close(); |
| | | }; |
| | | btnMsg1.MouseUpEventHandler += (sender, e) => |
| | | btnMsg1.MouseUpEventHandler += (sender2, e2) => |
| | | { |
| | | string url = "https://developer.hdlcontrol.com/人脸信息采集协议.html"; |
| | | if (Language.CurrentLanguage != "Chinese") |
| | |
| | | |
| | | dialog.Close(); |
| | | }; |
| | | btnConfirm.MouseUpEventHandler = (sender, e) => { |
| | | btnConfirm.MouseUpEventHandler = (sender2, e2) => { |
| | | dialog.Close(); |
| | | OnAppConfig.Instance.FaceManagementTip = true; |
| | | OnAppConfig.Instance.SaveConfig(); |
| | | LoadPictureOptionView(); |
| | | LoadPictureOptionView(btnAddFace); |
| | | }; |
| | | |
| | | }; |
| | |
| | | TextSize = CSS_FontSize.SubheadingFontSize, |
| | | IsBold = true, |
| | | TextAlignment = TextAlignment.Center, |
| | | TextID = StringId.ConfirmInvitation, |
| | | TextID = StringId.Confirm, |
| | | }; |
| | | bodyView.AddChidren(btnAddMember); |
| | | |
| | |
| | | } |
| | | else |
| | | { |
| | | var btnTitle = new Button() |
| | | var btnTitle2 = new Button() |
| | | { |
| | | Y = Application.GetRealHeight(70), |
| | | X = Application.GetRealWidth(16), |
| | |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextID = StringId.NewMemberAccount, |
| | | }; |
| | | bodyView.AddChidren(btnTitle); |
| | | bodyView.AddChidren(btnTitle2); |
| | | |
| | | etMemberAccount = new EditText() |
| | | { |
| | | Y = btnTitle.Bottom, |
| | | Y = btnTitle2.Bottom, |
| | | X = Application.GetRealWidth(16), |
| | | Width = Application.GetRealWidth(356), |
| | | Height = Application.GetRealHeight(40), |
| | |
| | | TextSize = CSS_FontSize.SubheadingFontSize, |
| | | IsBold = true, |
| | | TextAlignment = TextAlignment.Center, |
| | | TextID = StringId.ConfirmInvitation, |
| | | TextID = StringId.Confirm, |
| | | }; |
| | | bodyView.AddChidren(btnAddMember); |
| | | |
| | |
| | | /// <summary> |
| | | /// 加载图标选择选项 |
| | | /// </summary> |
| | | void LoadPictureOptionView() |
| | | void LoadPictureOptionView(Button btnAddFace) |
| | | { |
| | | var pView = new FrameLayout() |
| | | { |
| | |
| | | var imageName = Guid.NewGuid().ToString(); |
| | | CropImage.TakePicture((imagePath) => |
| | | { |
| | | CropImageCallBack(imagePath, 1, imageName); |
| | | }, imageName, 4, 6, imageHeight); |
| | | if (imagePath != null) |
| | | { |
| | | var imageBytes = getFaceImageBytes(imagePath); |
| | | btnAddFace.ImageBytes = imageBytes; |
| | | base64string = Convert.ToBase64String(imageBytes); |
| | | } |
| | | |
| | | }, imageName, 6, 6, imageHeight); |
| | | |
| | | pictureOptionView.Parent.RemoveFromParent(); |
| | | }; |
| | |
| | | //var imageName = scene.sid; |
| | | CropImage.SelectPicture((imagePath) => |
| | | { |
| | | CropImageCallBack(imagePath, 2, imageName); |
| | | }, imageName, 4, 6, imageHeight); |
| | | if (imagePath != null) |
| | | { |
| | | var imageBytes = getFaceImageBytes(imagePath); |
| | | btnAddFace.ImageBytes = imageBytes; |
| | | base64string = Convert.ToBase64String(imageBytes); |
| | | } |
| | | }, imageName, 6, 6, imageHeight); |
| | | |
| | | pictureOptionView.Parent.RemoveFromParent(); |
| | | }; |
| | | |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 裁剪完照片回调,统一处理 |
| | | /// 获取本地选取的人脸数据 |
| | | /// </summary> |
| | | /// <param name="imagePath">裁剪后的真实路径</param> |
| | | /// <param name="imageSource">照片来源;1:拍照;2:图库</param> |
| | | void CropImageCallBack(string selectImagePath, int imageSource, string imageName) |
| | | /// <param name="selectImagePath"></param> |
| | | /// <returns></returns> |
| | | byte[] getFaceImageBytes(string selectImagePath) |
| | | { |
| | | if (string.IsNullOrEmpty(selectImagePath) == true) |
| | | { |
| | | return; |
| | | } |
| | | //上传成功到回调 |
| | | Action<bool> uploadSuccessAction = (isSuccess) => |
| | | { |
| | | //点击重新录入事件 |
| | | Action action = () => |
| | | { |
| | | if (!isSuccess) |
| | | { |
| | | if (imageSource == 1) |
| | | { |
| | | CropImage.TakePicture((imagePath) => |
| | | { |
| | | CropImageCallBack(imagePath, 2, imageName); |
| | | }, imageName, 4, 6, imageHeight); |
| | | } |
| | | else |
| | | { |
| | | CropImage.SelectPicture((imagePath) => |
| | | { |
| | | CropImageCallBack(imagePath, 1, imageName); |
| | | }, imageName, 4, 6, imageHeight); |
| | | } |
| | | } |
| | | }; |
| | | |
| | | if (isSuccess) |
| | | { |
| | | //ReadFaceInfo(false); |
| | | } |
| | | |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | var page = new FaceSettingResultPage(action); |
| | | MainPage.BasePageView.AddChidren(page); |
| | | page.LoadPage(isSuccess); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | }); |
| | | }; |
| | | //上传图片到云端 |
| | | UploadImage(selectImagePath, uploadSuccessAction); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 上传图片方法 |
| | | /// </summary> |
| | | /// <param name="selectImagePath">裁剪后的图片路径</param> |
| | | /// <param name="imageView"></param> |
| | | /// <param name="uploadResultAction"></param> |
| | | void UploadImage(string selectImagePath, Action<bool> uploadResultAction) |
| | | { |
| | | try |
| | | { |
| | | //1.读取裁剪后的图片,然后删除 |
| | | var imageBytes = Shared.IO.FileUtils.ReadFile(selectImagePath); |
| | | System.IO.File.Delete(selectImagePath); |
| | | |
| | | var waitPage = new Loading(); |
| | | bodyView.AddChidren(waitPage); |
| | | waitPage.Start(Language.StringByID(StringId.PleaseWait)); |
| | | //开始上传 |
| | | new Thread(() => |
| | | { |
| | | try |
| | | { |
| | | string base64string = Convert.ToBase64String(imageBytes); |
| | | //Utlis.WriteLine("上传图片Length:" + imageBytes.Length + " base64:" + base64string); |
| | | var pack = new HttpServerRequest().FaceSetting(base64string); |
| | | if (pack != null) |
| | | { |
| | | Utlis.WriteLine("上传结果:" + pack.message); |
| | | uploadResultAction?.Invoke(pack.Code == StateCode.SUCCESS); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | } |
| | | finally |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | if (waitPage != null) |
| | | { |
| | | waitPage.RemoveFromParent(); |
| | | waitPage = null; |
| | | } |
| | | }); |
| | | } |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | MainPage.Log(ex.Message); |
| | | } |
| | | var imageBytes = Shared.IO.FileUtils.ReadFile(selectImagePath); |
| | | System.IO.File.Delete(selectImagePath); |
| | | return imageBytes; |
| | | } |
| | | |
| | | } |