| | |
| | | 670=After entering the detection range, the door lock will automatically recognize the face and unlock it |
| | | 671=Note: The distance for recognizing faces is affected by the trigger sensitivity, and the higher the sensitivity, the farther the recognition distance. |
| | | 672=Need to touch the door lock number button, wake up the door lock, recognize the face, and unlock it |
| | | 673=Door lock system volume |
| | | 674=Doorbell volume |
| | | 675=Low |
| | | 676=Moderate |
| | | 677=High |
| | | |
| | | |
| | | |
| | | |
| | |
| | | 670=进入检测范围后,门锁将自动识别人脸并开锁 |
| | | 671=注:识别人脸的距离,会受触发灵敏度影响,灵敏度越高,识别距离越远。 |
| | | 672=需要触摸门锁数字按键,唤醒门锁后识别人脸并开锁 |
| | | |
| | | 673=门锁系统音量 |
| | | 674=门铃音量 |
| | | 675=低 |
| | | 676=中 |
| | | 677=高 |
| | | |
| | | |
| | | 2532=访客邀请记录 |
| | |
| | | 670=After entering the detection range, the door lock will automatically recognize the face and unlock it |
| | | 671=Note: The distance for recognizing faces is affected by the trigger sensitivity, and the higher the sensitivity, the farther the recognition distance. |
| | | 672=Need to touch the door lock number button, wake up the door lock, recognize the face, and unlock it |
| | | 673=Door lock system volume |
| | | 674=Doorbell volume |
| | | 675=Low |
| | | 676=Moderate |
| | | 677=High |
| | | |
| | | |
| | | |
| | | |
| | |
| | | 670=After entering the detection range, the door lock will automatically recognize the face and unlock it |
| | | 671=Note: The distance for recognizing faces is affected by the trigger sensitivity, and the higher the sensitivity, the farther the recognition distance. |
| | | 672=Need to touch the door lock number button, wake up the door lock, recognize the face, and unlock it |
| | | 673=Door lock system volume |
| | | 674=Doorbell volume |
| | | 675=Low |
| | | 676=Moderate |
| | | 677=High |
| | | |
| | | |
| | | |
| | | |
| | |
| | | 670=After entering the detection range, the door lock will automatically recognize the face and unlock it |
| | | 671=Note: The distance for recognizing faces is affected by the trigger sensitivity, and the higher the sensitivity, the farther the recognition distance. |
| | | 672=Need to touch the door lock number button, wake up the door lock, recognize the face, and unlock it |
| | | 673=Door lock system volume |
| | | 674=Doorbell volume |
| | | 675=Low |
| | | 676=Moderate |
| | | 677=High |
| | | |
| | | |
| | | |
| | | |
| | |
| | | <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\ManualTriggerIcon_blue.png" /> |
| | | <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\ManualTriggerIcon_white.png" /> |
| | | <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\TouchUnlcokImage.png" /> |
| | | <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\DoorlockHelpImage1.png" /> |
| | | <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\DoorlockHelpImage2.png" /> |
| | | <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\DoorlockHelpImage3.png" /> |
| | | <AndroidAsset Include="Assets\Phone\FunctionIcon\DoorLock\DoorlockHelpImage4.png" /> |
| | | </ItemGroup> |
| | | <ItemGroup> |
| | | <AndroidResource Include="Resources\values\colors.xml" /> |
| | |
| | | <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\ManualTriggerIcon_blue.png" /> |
| | | <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\ManualTriggerIcon_white.png" /> |
| | | <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\TouchUnlcokImage.png" /> |
| | | <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\DoorlockHelpImage1.png" /> |
| | | <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\DoorlockHelpImage2.png" /> |
| | | <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\DoorlockHelpImage3.png" /> |
| | | <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\DoorlockHelpImage4.png" /> |
| | | </ItemGroup> |
| | | <ItemGroup> |
| | | <ITunesArtwork Include="iTunesArtwork" /> |
| | |
| | | 647=Face key |
| | | 648=Delete user |
| | | 649=Activity detection |
| | | 650=Do you want to delete this user? |
| | | 651=Successfully deleted |
| | | 652=Unlock settings |
| | | 653=Face unlock settings |
| | | 654=Press the button to unlock twice |
| | | 655=To unlock indoors, press the unlock button twice to prevent children or pets from accidentally touching the lock |
| | | 656=Child lock mode |
| | | 657=After opening, the door cannot be unlocked through buttons, only the emergency knob can be used to unlock |
| | | 658=Anti lock mode |
| | | 659=After opening, ordinary users cannot unlock, while the main user can still unlock. After opening the door with the indoor button, the anti lock mode will automatically close |
| | | 660=Deployment mode |
| | | 661=It is recommended to change the mode when leaving home for a long time. It can also be activated by pressing the blue button that lights up on the door lock keyboard after closing the door |
| | | 662=Audio settings |
| | | 663=Battery management |
| | | 664=Face unlocking |
| | | 665=After opening, the device can perform facial recognition and unlock |
| | | 666=Trigger mode |
| | | 667=Face entry help |
| | | 668=Manual triggering |
| | | 669=Automatic triggering |
| | | 670=After entering the detection range, the door lock will automatically recognize the face and unlock it |
| | | 671=Note: The distance for recognizing faces is affected by the trigger sensitivity, and the higher the sensitivity, the farther the recognition distance. |
| | | 672=Need to touch the door lock number button, wake up the door lock, recognize the face, and unlock it |
| | | 673=Door lock system volume |
| | | 674=Doorbell volume |
| | | 675=Low |
| | | 676=Moderate |
| | | 677=High |
| | | |
| | | |
| | | |
| | | |
| | | |
| | |
| | | 647=人脸钥匙 |
| | | 648=删除用户 |
| | | 649=活动检测 |
| | | |
| | | 650=是否删除该用户? |
| | | 651=删除成功 |
| | | 652=开锁设置 |
| | | 653=人脸开锁设置 |
| | | 654=按键两次开锁 |
| | | 655=室内开锁,需按两次开锁键,以防儿童、宠物误触开锁 |
| | | 656=童锁模式 |
| | | 657=开启后,室内不能通过按键开锁,仅可使用应急旋钮开锁 |
| | | 658=反锁模式 |
| | | 659=开启后,普通用户不可开锁,主用户仍可开锁,室内按键开门后反锁模式将自动关闭 |
| | | 660=布防模式 |
| | | 661=长期离家建议开启改模式,也可通过关门后按压门锁键盘亮起的蓝色按键开启 |
| | | 662=音频设置 |
| | | 663=电池管理 |
| | | 664=人脸开锁 |
| | | 665=开启后,设备可以进行人脸识别开锁 |
| | | 666=触发方式 |
| | | 667=人脸录入帮助 |
| | | 668=手动触发 |
| | | 669=自动触发 |
| | | 670=进入检测范围后,门锁将自动识别人脸并开锁 |
| | | 671=注:识别人脸的距离,会受触发灵敏度影响,灵敏度越高,识别距离越远。 |
| | | 672=需要触摸门锁数字按键,唤醒门锁后识别人脸并开锁 |
| | | 673=门锁系统音量 |
| | | 674=门铃音量 |
| | | 675=低 |
| | | 676=中 |
| | | 677=高 |
| | | |
| | | |
| | | 2532=访客邀请记录 |
| | |
| | | 647=Face key |
| | | 648=Delete user |
| | | 649=Activity detection |
| | | 650=Do you want to delete this user? |
| | | 651=Successfully deleted |
| | | 652=Unlock settings |
| | | 653=Face unlock settings |
| | | 654=Press the button to unlock twice |
| | | 655=To unlock indoors, press the unlock button twice to prevent children or pets from accidentally touching the lock |
| | | 656=Child lock mode |
| | | 657=After opening, the door cannot be unlocked through buttons, only the emergency knob can be used to unlock |
| | | 658=Anti lock mode |
| | | 659=After opening, ordinary users cannot unlock, while the main user can still unlock. After opening the door with the indoor button, the anti lock mode will automatically close |
| | | 660=Deployment mode |
| | | 661=It is recommended to change the mode when leaving home for a long time. It can also be activated by pressing the blue button that lights up on the door lock keyboard after closing the door |
| | | 662=Audio settings |
| | | 663=Battery management |
| | | 664=Face unlocking |
| | | 665=After opening, the device can perform facial recognition and unlock |
| | | 666=Trigger mode |
| | | 667=Face entry help |
| | | 668=Manual triggering |
| | | 669=Automatic triggering |
| | | 670=After entering the detection range, the door lock will automatically recognize the face and unlock it |
| | | 671=Note: The distance for recognizing faces is affected by the trigger sensitivity, and the higher the sensitivity, the farther the recognition distance. |
| | | 672=Need to touch the door lock number button, wake up the door lock, recognize the face, and unlock it |
| | | 673=Door lock system volume |
| | | 674=Doorbell volume |
| | | 675=Low |
| | | 676=Moderate |
| | | 677=High |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | |
| | | 647=Face key |
| | | 648=Delete user |
| | | 649=Activity detection |
| | | 650=Do you want to delete this user? |
| | | 651=Successfully deleted |
| | | 652=Unlock settings |
| | | 653=Face unlock settings |
| | | 654=Press the button to unlock twice |
| | | 655=To unlock indoors, press the unlock button twice to prevent children or pets from accidentally touching the lock |
| | | 656=Child lock mode |
| | | 657=After opening, the door cannot be unlocked through buttons, only the emergency knob can be used to unlock |
| | | 658=Anti lock mode |
| | | 659=After opening, ordinary users cannot unlock, while the main user can still unlock. After opening the door with the indoor button, the anti lock mode will automatically close |
| | | 660=Deployment mode |
| | | 661=It is recommended to change the mode when leaving home for a long time. It can also be activated by pressing the blue button that lights up on the door lock keyboard after closing the door |
| | | 662=Audio settings |
| | | 663=Battery management |
| | | 664=Face unlocking |
| | | 665=After opening, the device can perform facial recognition and unlock |
| | | 666=Trigger mode |
| | | 667=Face entry help |
| | | 668=Manual triggering |
| | | 669=Automatic triggering |
| | | 670=After entering the detection range, the door lock will automatically recognize the face and unlock it |
| | | 671=Note: The distance for recognizing faces is affected by the trigger sensitivity, and the higher the sensitivity, the farther the recognition distance. |
| | | 672=Need to touch the door lock number button, wake up the door lock, recognize the face, and unlock it |
| | | 673=Door lock system volume |
| | | 674=Doorbell volume |
| | | 675=Low |
| | | 676=Moderate |
| | | 677=High |
| | | |
| | | |
| | | |
| | | |
| | | |
| | |
| | | 647=Face key |
| | | 648=Delete user |
| | | 649=Activity detection |
| | | 650=Do you want to delete this user? |
| | | 651=Successfully deleted |
| | | 652=Unlock settings |
| | | 653=Face unlock settings |
| | | 654=Press the button to unlock twice |
| | | 655=To unlock indoors, press the unlock button twice to prevent children or pets from accidentally touching the lock |
| | | 656=Child lock mode |
| | | 657=After opening, the door cannot be unlocked through buttons, only the emergency knob can be used to unlock |
| | | 658=Anti lock mode |
| | | 659=After opening, ordinary users cannot unlock, while the main user can still unlock. After opening the door with the indoor button, the anti lock mode will automatically close |
| | | 660=Deployment mode |
| | | 661=It is recommended to change the mode when leaving home for a long time. It can also be activated by pressing the blue button that lights up on the door lock keyboard after closing the door |
| | | 662=Audio settings |
| | | 663=Battery management |
| | | 664=Face unlocking |
| | | 665=After opening, the device can perform facial recognition and unlock |
| | | 666=Trigger mode |
| | | 667=Face entry help |
| | | 668=Manual triggering |
| | | 669=Automatic triggering |
| | | 670=After entering the detection range, the door lock will automatically recognize the face and unlock it |
| | | 671=Note: The distance for recognizing faces is affected by the trigger sensitivity, and the higher the sensitivity, the farther the recognition distance. |
| | | 672=Need to touch the door lock number button, wake up the door lock, recognize the face, and unlock it |
| | | 673=Door lock system volume |
| | | 674=Doorbell volume |
| | | 675=Low |
| | | 676=Moderate |
| | | 677=High |
| | | |
| | | |
| | | |
| | | |
| | |
| | | { |
| | | try |
| | | { |
| | | MainPage.Log($"接收到推送"); |
| | | MainPage.Log($"接收到推送.\r\n{Newtonsoft.Json.JsonConvert.SerializeObject(jpushMessageInfo).ToString()}"); |
| | | |
| | | //Extras为空不处理 |
| | | if (string.IsNullOrEmpty(jpushMessageInfo.Extras)) return; |
| | | |
| | | if (jpushMessageInfo.Extras.Contains(PushMessageType.OffLine.ToString())) |
| | | if (jpushMessageInfo.Extras == (PushMessageType.OffLine.ToString())) |
| | | { |
| | | CheckLogout(); |
| | | } |
| | |
| | | if (string.IsNullOrEmpty(jpushMessageInfo.messageType)) return; |
| | | |
| | | //报警推送才弹窗提示(messageType包含Alarm关键字的) |
| | | if (jpushMessageInfo.messageType.Contains(PushMessageType.Alarm.ToString())) |
| | | if (jpushMessageInfo.messageType == (PushMessageType.Alarm.ToString())) |
| | | { |
| | | //报警推送弹窗提示 |
| | | ShowAlarmPushMessage(jpushMessageInfo, true); |
| | | //萤石门锁推送 |
| | | HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock.CommonMethod.Current.DoorLockPush(jpushMessageInfo); |
| | | } |
| | | else if (jpushMessageInfo.messageType.Contains(PushMessageType.FLCall.ToString())) |
| | | else if (jpushMessageInfo.messageType == (PushMessageType.FLCall.ToString())) |
| | | { |
| | | if (string.IsNullOrEmpty(jpushMessageInfo.expantContent)) return; |
| | | |
| | |
| | | ESOnVideo.Current.ShowESvideoVideoIntercom(eSVideoInfo, InterphoneType.FLVI.ToString()); |
| | | |
| | | } |
| | | else if (jpushMessageInfo.messageType.Contains(PushMessageType.HDL_INTERPHONE.ToString())) |
| | | else if (jpushMessageInfo.messageType == (PushMessageType.HDL_INTERPHONE.ToString())) |
| | | { |
| | | |
| | | if (string.IsNullOrEmpty(jpushMessageInfo.expantContent)) return; |
| | |
| | | var json = Newtonsoft.Json.Linq.JObject.Parse(jpushMessageInfo.expantContent); |
| | | try |
| | | { |
| | | //var pushHomeId = json["homeId"]; |
| | | //if (pushHomeId == null || string.IsNullOrEmpty(pushHomeId.ToString())){ |
| | | // Console.WriteLine("homeId is null"); |
| | | // return; |
| | | //} |
| | | var pushTime = json["pushTime"]; |
| | | if(pushTime == null) |
| | | { |
| | | return; |
| | | } |
| | | if (!string.IsNullOrEmpty(pushTime.ToString())) |
| | | { |
| | | var pushDateTime = Utlis.UnixToDateTimeMS(Convert.ToInt64(pushTime)); |
| | |
| | | ESOnVideo.Current.ShowESvideoVideoIntercom(eSVideoInfo, interphoneTypeEnum); |
| | | |
| | | } |
| | | else if (jpushMessageInfo.messageType.Contains(PushMessageType.Prompt.ToString())) |
| | | else if (jpushMessageInfo.messageType == (PushMessageType.Prompt.ToString())) |
| | | { |
| | | ShowAlarmPushMessage(jpushMessageInfo, false); |
| | | //萤石门锁推送 |
| | | HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock.CommonMethod.Current.DoorLockPush(jpushMessageInfo); |
| | | } |
| | | else if (jpushMessageInfo.messageType.Contains(PushMessageType.DOOR_BELL.ToString())) |
| | | else if (jpushMessageInfo.messageType == (PushMessageType.DOOR_BELL.ToString())) |
| | | { |
| | | //萤石门锁推送 |
| | | HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock.CommonMethod.Current.DoorLockPush(jpushMessageInfo); |
| | |
| | | { |
| | | public static class StringId |
| | | { |
| | | |
| | | /// <summary> |
| | | /// 高 |
| | | /// </summary> |
| | | public const int High = 677; |
| | | /// <summary> |
| | | /// 中 |
| | | /// </summary> |
| | | public const int Moderate = 676; |
| | | /// <summary> |
| | | /// 低 |
| | | /// </summary> |
| | | public const int Low = 675; |
| | | /// <summary> |
| | | /// 门铃音量 |
| | | /// </summary> |
| | | public const int DoorbellVolume = 674; |
| | | /// <summary> |
| | | /// 门锁系统音量 |
| | | /// </summary> |
| | | public const int DoorlockSystemVolume = 673; |
| | | /// <summary> |
| | | /// 需要触摸门锁数字按键,唤醒门锁后识别人脸并开锁 |
| | | /// </summary> |
| | |
| | | return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_SetFaceRecognitionUnlockCfg, requestJson); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 查询门锁系统声音 |
| | | /// </summary> |
| | | /// <param name="deviceId"></param> |
| | | /// <returns></returns> |
| | | public ResponsePackNew GetDoorLockSystemSound(string deviceId) |
| | | { |
| | | var d = new Dictionary<string, object>(); |
| | | d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id); |
| | | d.Add("deviceId", deviceId); |
| | | var requestJson = HttpUtil.GetSignRequestJson(d); |
| | | return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_GetDoorLockSystemSound, requestJson); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 设置门锁系统声音 |
| | | /// </summary> |
| | | /// <param name="deviceId"></param> |
| | | /// <param name="sound"></param> |
| | | /// <returns></returns> |
| | | public ResponsePackNew SetDoorLockSystemSound(string deviceId,string sound) |
| | | { |
| | | var d = new Dictionary<string, object>(); |
| | | d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id); |
| | | d.Add("deviceId", deviceId); |
| | | d.Add("sound", sound); |
| | | var requestJson = HttpUtil.GetSignRequestJson(d); |
| | | return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_SetDoorLockSystemSound, requestJson); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 查询门铃提示音 |
| | | /// </summary> |
| | | /// <param name="deviceId"></param> |
| | | /// <returns></returns> |
| | | public ResponsePackNew GetDoorBellTone(string deviceId) |
| | | { |
| | | var d = new Dictionary<string, object>(); |
| | | d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id); |
| | | d.Add("deviceId", deviceId); |
| | | var requestJson = HttpUtil.GetSignRequestJson(d); |
| | | return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_GetDoorBellTone, requestJson); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 设置门铃提示音 |
| | | /// </summary> |
| | | /// <param name="deviceId"></param> |
| | | /// <param name="volume"></param> |
| | | /// <returns></returns> |
| | | public ResponsePackNew SetDoorBellTone(string deviceId, string volume) |
| | | { |
| | | var d = new Dictionary<string, object>(); |
| | | d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id); |
| | | d.Add("deviceId", deviceId); |
| | | d.Add("volume", volume); |
| | | var requestJson = HttpUtil.GetSignRequestJson(d); |
| | | return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_SetDoorBellTone, requestJson); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | #endregion |
| | | |
| | | #endregion |
| | |
| | | /// 设置人脸识别解锁配置 |
| | | /// </summary> |
| | | public const string Api_Post_SetFaceRecognitionUnlockCfg = "/home-wisdom/platform/yingshi/lock/setFaceRecognitionUnlockCfg"; |
| | | /// <summary> |
| | | /// 查询门锁系统声音 |
| | | /// </summary> |
| | | public const string Api_Post_GetDoorLockSystemSound = "/home-wisdom/platform/yingshi/lock/getDoorLockSystemSound"; |
| | | /// <summary> |
| | | /// 设置门锁系统声音 |
| | | /// </summary> |
| | | public const string Api_Post_SetDoorLockSystemSound = "/home-wisdom/platform/yingshi/lock/setDoorLockSystemSound"; |
| | | /// <summary> |
| | | /// 查询门铃提示音 |
| | | /// </summary> |
| | | public const string Api_Post_GetDoorBellTone = "/home-wisdom/platform/yingshi/lock/getDoorBellTone"; |
| | | /// <summary> |
| | | /// 设置门铃提示音 |
| | | /// </summary> |
| | | public const string Api_Post_SetDoorBellTone = "/home-wisdom/platform/yingshi/lock/setDoorBellTone"; |
| | | |
| | | |
| | | |
| | |
| | | |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | if(revertObj == null) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | #if __IOS__ |
| | | if (revertObj.Code == StateCode.SUCCESS) |
| | |
| | | /// </summary> |
| | | public string GetUintString() |
| | | { |
| | | if (!string.IsNullOrEmpty(UintString)) |
| | | if (!string.IsNullOrEmpty(UintString) && UintString!= "{}") |
| | | { |
| | | return UintString; |
| | | } |
| | |
| | | <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\VideoDoorLock\UnlockSettingPage.cs" />
|
| | | <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\VideoDoorLock\UnlockSettingFacePage.cs" />
|
| | | <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\VideoDoorLock\VideoDoorlockFaceUnlockTriggerSettingPage.cs" />
|
| | | <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\VideoDoorLock\VideoDoorlockFaceUnlockHelpPage.cs" />
|
| | | <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\VideoDoorLock\VideoDoorlockAudioSetupPage.cs" />
|
| | | </ItemGroup>
|
| | | <ItemGroup>
|
| | | <Folder Include="$(MSBuildThisFileDirectory)Entity\Device\" />
|
| | |
| | | /// <summary> |
| | | /// 版本号 |
| | | /// </summary> |
| | | public static string VersionString = "1.8.1"; |
| | | public static string VersionString = "1.8.0"; |
| | | ///// <summary> |
| | | ///// 客户端类型 |
| | | ///// </summary> |
| | |
| | | this.MainThread(() => |
| | | { |
| | | if (string.IsNullOrEmpty(jpushMessageInfo.expantContent)) return; |
| | | try |
| | | { |
| | | //{ "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; |
| | | } |
| | |
| | | //开门推送 |
| | | this.UpdateDoorLockState(PushMessageType.Prompt); |
| | | } |
| | | }catch(Exception ex) |
| | | { |
| | | |
| | | } |
| | | }); |
| | | |
| | | } |
| | |
| | | Y = Application.GetRealHeight(64), |
| | | Height = Application.GetRealHeight(600), |
| | | ScrollEnabled = false, |
| | | BackgroundColor = CSS_Color.BackgroundColor, |
| | | }; |
| | | bodyView.AddChidren(contentView); |
| | | |
| | |
| | | |
| | | var btnTriggerModeStateText = new Button() |
| | | { |
| | | X = Application.GetRealWidth(100), |
| | | Width = Application.GetRealWidth(223), |
| | | TextAlignment = TextAlignment.CenterRight, |
| | | TextSize = CSS_FontSize.TextFontSize, |
| | |
| | | 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 |
| | | |
New file |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | 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 VideoDoorlockAudioSetupPage : FrameLayout |
| | | { |
| | | FrameLayout bodyView; |
| | | |
| | | Function device; |
| | | public VideoDoorlockAudioSetupPage(Function function) |
| | | { |
| | | device = function; |
| | | bodyView = this; |
| | | } |
| | | |
| | | public void LoadPage() |
| | | { |
| | | new TopViewDiv(bodyView, Language.StringByID(StringId.AudioSetup)).LoadTopView(); |
| | | bodyView.BackgroundColor = CSS_Color.BackgroundColor; |
| | | |
| | | |
| | | #region 门锁系统音量 |
| | | var doorlockSystemVolumeView = new FrameLayout() |
| | | { |
| | | Y = Application.GetRealHeight(64), |
| | | Height = Application.GetRealHeight(50), |
| | | BackgroundColor = CSS.CSS_Color.MainBackgroundColor, |
| | | }; |
| | | bodyView.AddChidren(doorlockSystemVolumeView); |
| | | |
| | | var btnDoorlockSystemVolumeRight = new Button() |
| | | { |
| | | X = Application.GetRealWidth(339), |
| | | Gravity = Gravity.CenterVertical, |
| | | Width = Application.GetMinRealAverage(16), |
| | | Height = Application.GetMinRealAverage(16), |
| | | UnSelectedImagePath = "Public/Right.png", |
| | | }; |
| | | doorlockSystemVolumeView.AddChidren(btnDoorlockSystemVolumeRight); |
| | | |
| | | var btnDoorlockSystemVolumeStateText = new Button() |
| | | { |
| | | X = Application.GetRealWidth(100), |
| | | Width = Application.GetRealWidth(223), |
| | | TextAlignment = TextAlignment.CenterRight, |
| | | TextSize = CSS_FontSize.TextFontSize, |
| | | TextColor = CSS_Color.PromptingColor1, |
| | | }; |
| | | doorlockSystemVolumeView.AddChidren(btnDoorlockSystemVolumeStateText); |
| | | |
| | | var btnDoorlockSystemVolumeText = new Button() |
| | | { |
| | | X = Application.GetRealWidth(16), |
| | | TextSize = CSS_FontSize.SubheadingFontSize, |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextID = StringId.DoorlockSystemVolume, |
| | | }; |
| | | doorlockSystemVolumeView.AddChidren(btnDoorlockSystemVolumeText); |
| | | |
| | | btnDoorlockSystemVolumeText.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | |
| | | }; |
| | | #endregion |
| | | |
| | | #region 门铃音量 |
| | | var viewDoorbellVolume = new FrameLayout() |
| | | { |
| | | Y = doorlockSystemVolumeView.Bottom, |
| | | Height = Application.GetRealHeight(50), |
| | | BackgroundColor = CSS.CSS_Color.MainBackgroundColor, |
| | | }; |
| | | bodyView.AddChidren(viewDoorbellVolume); |
| | | viewDoorbellVolume.AddChidren(new Button |
| | | { |
| | | Height = 1, |
| | | BackgroundColor = CSS_Color.DividingLineColor, |
| | | }); |
| | | |
| | | var btnDoorbellVolumeRight = new Button() |
| | | { |
| | | X = Application.GetRealWidth(339), |
| | | Gravity = Gravity.CenterVertical, |
| | | Width = Application.GetMinRealAverage(16), |
| | | Height = Application.GetMinRealAverage(16), |
| | | UnSelectedImagePath = "Public/Right.png", |
| | | }; |
| | | viewDoorbellVolume.AddChidren(btnDoorbellVolumeRight); |
| | | |
| | | var btnDoorbellVolumeStateText = new Button() |
| | | { |
| | | X = Application.GetRealWidth(100), |
| | | Width = Application.GetRealWidth(223), |
| | | TextAlignment = TextAlignment.CenterRight, |
| | | TextSize = CSS_FontSize.TextFontSize, |
| | | TextColor = CSS_Color.PromptingColor1, |
| | | }; |
| | | viewDoorbellVolume.AddChidren(btnDoorbellVolumeStateText); |
| | | |
| | | var btnDoorbellVolumeText = new Button() |
| | | { |
| | | X = Application.GetRealWidth(16), |
| | | TextSize = CSS_FontSize.SubheadingFontSize, |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextID = StringId.DoorbellVolume, |
| | | }; |
| | | viewDoorbellVolume.AddChidren(btnDoorbellVolumeText); |
| | | |
| | | btnDoorbellVolumeText.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | |
| | | }; |
| | | #endregion |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | var waitPage = new Loading(); |
| | | bodyView.AddChidren(waitPage); |
| | | waitPage.Start(""); |
| | | |
| | | new System.Threading.Thread(() => { |
| | | try |
| | | { |
| | | var pack = ApiUtlis.Ins.HttpRequest.GetDoorLockSystemSound(device.deviceId); |
| | | if (pack != null && pack.Code == StateCode.SUCCESS) |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | //更新界面 |
| | | var doorLockSystemSound = Newtonsoft.Json.JsonConvert.DeserializeObject<DoorLockSystemSound>(pack.Data.ToString()); |
| | | if(doorLockSystemSound != null) |
| | | { |
| | | switch (doorLockSystemSound.sound) |
| | | { |
| | | case 0: |
| | | btnDoorlockSystemVolumeStateText.TextID = StringId.Mute; |
| | | break; |
| | | case 1: |
| | | btnDoorlockSystemVolumeStateText.TextID = StringId.Low; |
| | | break; |
| | | case 2: |
| | | btnDoorlockSystemVolumeStateText.TextID = StringId.Moderate; |
| | | break; |
| | | case 3: |
| | | btnDoorlockSystemVolumeStateText.TextID = StringId.High; |
| | | break; |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | 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); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | |
| | | pack = ApiUtlis.Ins.HttpRequest.GetDoorBellTone(device.deviceId); |
| | | if (pack != null && pack.Code == StateCode.SUCCESS) |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | //更新界面 |
| | | var doorbellTone = Newtonsoft.Json.JsonConvert.DeserializeObject<DoorBellTone>(pack.Data.ToString()); |
| | | if (doorbellTone != null) |
| | | { |
| | | if (doorbellTone.volume == 0) |
| | | { |
| | | btnDoorbellVolumeStateText.TextID = StringId.Mute; |
| | | } |
| | | else if (doorbellTone.volume > 0 && doorbellTone.volume < 35) |
| | | { |
| | | btnDoorbellVolumeStateText.TextID = StringId.Low; |
| | | } |
| | | else if (doorbellTone.volume > 35 && doorbellTone.volume < 70) |
| | | { |
| | | btnDoorbellVolumeStateText.TextID = StringId.Moderate; |
| | | } |
| | | else if (doorbellTone.volume > 70) |
| | | { |
| | | btnDoorbellVolumeStateText.TextID = StringId.High; |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | 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(); |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 加载功能属性数据选择弹窗 |
| | | /// </summary> |
| | | void LoadEditDialog_FunctionPar(int titleId, int index, Button btn) |
| | | { |
| | | Button lastButton = new Button(); |
| | | var lastData = ""; |
| | | var lastText = ""; |
| | | Dialog dialog = new Dialog(); |
| | | |
| | | var pView = new FrameLayout() |
| | | { |
| | | BackgroundColor = CSS_Color.DialogTransparentColor1, |
| | | }; |
| | | dialog.AddChidren(pView); |
| | | |
| | | var optionBaseView = new FrameLayout() |
| | | { |
| | | Y = Application.GetRealHeight(579 - 50 * 4), |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Width = Application.GetRealWidth(343), |
| | | Height = Application.GetRealHeight(50 * 4 + 50), |
| | | AnimateSpeed = 0.3f, |
| | | Animate = Animate.DownToUp, |
| | | BackgroundColor = CSS_Color.MainBackgroundColor, |
| | | Radius = (uint)Application.GetRealWidth(12), |
| | | }; |
| | | pView.AddChidren(optionBaseView); |
| | | |
| | | var topView = new FrameLayout() |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Width = Application.GetRealWidth(343), |
| | | Height = Application.GetRealHeight(50), |
| | | BackgroundColor = CSS_Color.MainBackgroundColor, |
| | | Radius = (uint)Application.GetRealWidth(12), |
| | | }; |
| | | optionBaseView.AddChidren(topView); |
| | | |
| | | var btnTitle = new Button() |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | | TextAlignment = TextAlignment.Center, |
| | | Width = Application.GetRealWidth(100), |
| | | TextID = titleId, |
| | | IsBold = true, |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = CSS_FontSize.SubheadingFontSize, |
| | | }; |
| | | topView.AddChidren(btnTitle); |
| | | |
| | | var btnCancel = new Button() |
| | | { |
| | | X = Application.GetRealWidth(21), |
| | | Width = Application.GetRealWidth(100), |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextColor = CSS_Color.PromptingColor1, |
| | | TextSize = CSS_FontSize.TextFontSize, |
| | | TextID = StringId.Cancel, |
| | | }; |
| | | topView.AddChidren(btnCancel); |
| | | |
| | | var btnConfrim = new Button() |
| | | { |
| | | Width = Application.GetRealWidth(320), |
| | | TextAlignment = TextAlignment.CenterRight, |
| | | TextColor = CSS_Color.MainColor, |
| | | TextSize = CSS_FontSize.TextFontSize, |
| | | TextID = StringId.Complete, |
| | | }; |
| | | topView.AddChidren(btnConfrim); |
| | | int hei = 1; |
| | | var statusList = new List<string> |
| | | { |
| | | Language.StringByID(StringId.High), |
| | | Language.StringByID(StringId.Moderate), |
| | | Language.StringByID(StringId.Low), |
| | | Language.StringByID(StringId.Mute), |
| | | }; |
| | | |
| | | foreach (var m in statusList) |
| | | { |
| | | var row = new FrameLayout() |
| | | { |
| | | Y = Application.GetRealHeight(50 * hei), |
| | | Height = Application.GetRealHeight(50), |
| | | }; |
| | | optionBaseView.AddChidren(row); |
| | | if (statusList.Count > hei) |
| | | { |
| | | optionBaseView.AddChidren(new Button() |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Y = row.Bottom, |
| | | Width = Application.GetRealWidth(343), |
| | | BackgroundColor = CSS_Color.DividingLineColor, |
| | | Height = 1, |
| | | }); |
| | | } |
| | | hei++; |
| | | |
| | | var btnChoose = new Button() |
| | | { |
| | | X = Application.GetRealWidth(303), |
| | | Gravity = Gravity.CenterVertical, |
| | | Width = Application.GetMinRealAverage(28), |
| | | Height = Application.GetMinRealAverage(28), |
| | | UnSelectedImagePath = "Public/ChooseIcon.png", |
| | | SelectedImagePath = "Public/ChooseOnIcon.png", |
| | | |
| | | }; |
| | | row.AddChidren(btnChoose); |
| | | if (index == hei - 1) |
| | | { |
| | | lastButton = btnChoose; |
| | | btnChoose.IsSelected = true; |
| | | } |
| | | var btnPropertyTitle = new Button() |
| | | { |
| | | X = Application.GetRealWidth(16), |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = CSS_FontSize.TextFontSize, |
| | | Tag = index, |
| | | Text = m |
| | | }; |
| | | row.AddChidren(btnPropertyTitle); |
| | | |
| | | btnPropertyTitle.MouseUpEventHandler = (sender, e) => { |
| | | btnChoose.IsSelected = true; |
| | | if (lastButton != null) |
| | | { |
| | | lastButton.IsSelected = false; |
| | | } |
| | | lastButton = btnChoose; |
| | | lastData = btnPropertyTitle.Tag.ToString(); |
| | | lastText = btnPropertyTitle.Text; |
| | | }; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | dialog.Show(); |
| | | |
| | | pView.MouseUpEventHandler = (sender, e) => { |
| | | dialog.Close(); |
| | | }; |
| | | |
| | | btnCancel.MouseUpEventHandler = (sender, e) => { |
| | | dialog.Close(); |
| | | }; |
| | | btnConfrim.MouseUpEventHandler = (sender, e) => { |
| | | dialog.Close(); |
| | | trait.value = lastData; |
| | | //sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff).value = trait.curValue.ToString() ; |
| | | btn.Text = lastText; |
| | | }; |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 门锁系统声音 |
| | | /// </summary> |
| | | public class DoorLockSystemSound |
| | | { |
| | | /// <summary> |
| | | /// 声音 |
| | | /// 0-静音 1-低音 2-中音 3-高音 4-自动 |
| | | /// </summary> |
| | | public int sound = 0; |
| | | } |
| | | /// <summary> |
| | | /// 门铃提示音量 |
| | | /// </summary> |
| | | public class DoorBellTone |
| | | { |
| | | /// <summary> |
| | | /// 音量 范围0-100 |
| | | /// </summary> |
| | | public int volume = 0; |
| | | } |
| | | |
| | | |
| | | |
| | | } |
New file |
| | |
| | | using System; |
| | | using HDL_ON.UI.CSS; |
| | | using Shared; |
| | | |
| | | namespace HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock |
| | | { |
| | | public class VideoDoorlockFaceUnlockHelpPage : FrameLayout |
| | | { |
| | | FrameLayout bodyView; |
| | | |
| | | |
| | | public VideoDoorlockFaceUnlockHelpPage() |
| | | { |
| | | bodyView = this; |
| | | } |
| | | |
| | | |
| | | public void LoadPage() |
| | | { |
| | | |
| | | new TopViewDiv(bodyView, Language.StringByID(StringId.TriggerMode)).LoadTopView(); |
| | | bodyView.BackgroundColor = CSS_Color.MainBackgroundColor; |
| | | |
| | | var contentView = new VerticalScrolViewLayout() |
| | | { |
| | | Y = Application.GetRealHeight(64), |
| | | Height = Application.GetRealHeight(667 - 64), |
| | | }; |
| | | bodyView.AddChidren(contentView); |
| | | |
| | | //DoorlockHelpImage |
| | | |
| | | var btnImage1 = new Button() |
| | | { |
| | | Height = Application.GetRealWidth(180), |
| | | UnSelectedImagePath = "FunctionIcon/DoorLock/DoorlockHelpImage1.png" |
| | | }; |
| | | contentView.AddChidren(btnImage1); |
| | | |
| | | var msgView1 = new FrameLayout() |
| | | { |
| | | Height = Application.GetRealHeight(253), |
| | | }; |
| | | contentView.AddChidren(msgView1); |
| | | |
| | | var btnMsg1Title = new Button() |
| | | { |
| | | X = Application.GetRealWidth(16), |
| | | Y = Application.GetRealHeight(20), |
| | | Width = Application.GetRealWidth(343), |
| | | Height = Application.GetRealHeight(49), |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextSize = CSS_FontSize.SubheadingFontSize, |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | Text = "录入前" |
| | | }; |
| | | msgView1.AddChidren(btnMsg1Title); |
| | | |
| | | var btnMsg1Tip = new Button() |
| | | { |
| | | X = Application.GetRealWidth(16), |
| | | Y = btnMsg1Title.Bottom, |
| | | Width = Application.GetRealWidth(343), |
| | | Height = Application.GetRealHeight(184), |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | IsMoreLines = true, |
| | | TextSize = CSS_FontSize.TextFontSize, |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | Text = "请到门锁旁,按门锁set键,使用主用户登录菜单,选择“添加用户-添加人脸”/“用户管理-用户编号-添加人脸”。以下是几个需要注意的点:\r\n" +
|
| | | "\r\n1、为了保证录入效果,请在关门的情况下录入人脸(关门前请确保有其他开门方式可进门)。\r\n" +
|
| | | "\r\n2、录入时请露出清晰的面部特征,不要佩戴帽子、口罩。\r\n" |
| | | }; |
| | | msgView1.AddChidren(btnMsg1Tip); |
| | | |
| | | var btnImage2 = new Button() |
| | | { |
| | | Height = Application.GetRealWidth(132), |
| | | UnSelectedImagePath = "FunctionIcon/DoorLock/DoorlockHelpImage2.png" |
| | | }; |
| | | contentView.AddChidren(btnImage2); |
| | | |
| | | var msgView2 = new FrameLayout() |
| | | { |
| | | Height = Application.GetRealHeight(129), |
| | | }; |
| | | contentView.AddChidren(msgView2); |
| | | |
| | | var btnMsg2Title = new Button() |
| | | { |
| | | X = Application.GetRealWidth(16), |
| | | Y = Application.GetRealHeight(20), |
| | | Width = Application.GetRealWidth(343), |
| | | Height = Application.GetRealHeight(49), |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextSize = CSS_FontSize.SubheadingFontSize, |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | Text = "录入中" |
| | | }; |
| | | msgView2.AddChidren(btnMsg2Title); |
| | | |
| | | var btnMsg2Tip = new Button() |
| | | { |
| | | X = Application.GetRealWidth(16), |
| | | Y = btnMsg1Title.Bottom, |
| | | Width = Application.GetRealWidth(343), |
| | | Height = Application.GetRealHeight(60), |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | IsMoreLines = true, |
| | | TextSize = CSS_FontSize.TextFontSize, |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | Text = "1、请站在锁正前方,并与锁具保持一臂距离(50cm左右)进行采集。\r\n",
|
| | | }; |
| | | msgView2.AddChidren(btnMsg2Tip); |
| | | |
| | | var btnImage3 = new Button() |
| | | { |
| | | Height = Application.GetRealWidth(180), |
| | | UnSelectedImagePath = "FunctionIcon/DoorLock/DoorlockHelpImage3.png" |
| | | }; |
| | | contentView.AddChidren(btnImage3); |
| | | |
| | | var btnMsg3 = new Button() |
| | | { |
| | | X = Application.GetRealWidth(16), |
| | | Width = Application.GetRealWidth(343), |
| | | Height = Application.GetRealHeight(104), |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | IsMoreLines = true, |
| | | TextSize = CSS_FontSize.TextFontSize, |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | Text = "2、录入时请跟随语音指导微微转动头部,以竖直或水平线为轴,转动幅度请控制在30度以内。\r\n" |
| | | }; |
| | | contentView.AddChidren(btnMsg3); |
| | | |
| | | var btnImage4 = new Button() |
| | | { |
| | | Height = Application.GetRealWidth(204), |
| | | UnSelectedImagePath = "FunctionIcon/DoorLock/DoorlockHelpImage4.png" |
| | | }; |
| | | contentView.AddChidren(btnImage4); |
| | | |
| | | if(Language.CurrentLanguage != "Chinese") |
| | | { |
| | | btnMsg1Title.Text = "Before entry"; |
| | | |
| | | btnMsg1Tip.Text = "Please go to the door lock, press the door lock set key, use the main user login menu, select 'Add User -Add Face'/'User Management -User ID - Add Face'. Here are a few points to note: \r\n" |
| | | + "\r\n1.To ensure the recording effect, please input your face while closing the door(please ensure that there are other door opening methods available before closing the door). \r\n" |
| | | + "\r\n2.Please show clear facial features when entering, and do not wear hats or masks.\r\n"; |
| | | |
| | | btnMsg2Title.Text = "Entering"; |
| | | |
| | | btnMsg2Tip.Text = "1. Please stand in front of the lock and maintain an arm's distance (approximately 50cm) from the lock for collection.\r\n"; |
| | | |
| | | btnMsg3.Text = "2. When entering, please follow the voice guidance to slightly rotate the head, using a vertical or horizontal line as the axis, and the rotation amplitude should be controlled within 30 degrees.\r\n"; |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | |
| | | Y = Application.GetRealHeight(20), |
| | | Width = Application.GetRealWidth(164), |
| | | Height = Application.GetRealWidth(60), |
| | | Radius = (uint)Application.GetRealWidth(30), |
| | | Radius = (uint)Application.GetRealWidth(12), |
| | | BackgroundColor = faceUnlockSetup.mode == 0 ? CSS_Color.MainColor : CSS_Color.MainBackgroundColor, |
| | | BorderColor = CSS_Color.MainColor, |
| | | BorderWidth = 1, |
| | | }; |
| | | contentView.AddChidren(autoView); |
| | | |
| | |
| | | var btnAutoText = new Button |
| | | { |
| | | X = btnAutoIcon.Right + Application.GetRealWidth(4), |
| | | Width = Application.GetRealWidth(50), |
| | | Width = Application.GetRealWidth(90), |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextSize = CSS_FontSize.HeadlineFontSize, |
| | | TextColor = faceUnlockSetup.mode == 1 ? CSS_Color.MainColor : CSS_Color.MainBackgroundColor, |
| | | TextID = StringId.AutomaticTriggering, |
| | | }; |
| | | autoView.AddChidren(btnAutoText); |
| | | |
| | |
| | | #region 手动触发 |
| | | var manualView = new FrameLayout() |
| | | { |
| | | X = Application.GetRealWidth(16), |
| | | X = Application.GetRealWidth(196), |
| | | Y = Application.GetRealHeight(20), |
| | | Width = Application.GetRealWidth(164), |
| | | Height = Application.GetRealWidth(60), |
| | | Radius = (uint)Application.GetRealWidth(30), |
| | | Radius = (uint)Application.GetRealWidth(12), |
| | | BackgroundColor = faceUnlockSetup.mode == 1 ? CSS_Color.MainColor : CSS_Color.MainBackgroundColor, |
| | | BorderColor = CSS_Color.MainColor, |
| | | BorderWidth = 1, |
| | | }; |
| | | contentView.AddChidren(manualView); |
| | | |
| | |
| | | var btnManualText = new Button |
| | | { |
| | | X = btnManualIcon.Right + Application.GetRealWidth(4), |
| | | Width = Application.GetRealWidth(50), |
| | | Width = Application.GetRealWidth(90), |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextSize = CSS_FontSize.HeadlineFontSize, |
| | | TextColor = faceUnlockSetup.mode == 0 ? CSS_Color.MainColor : CSS_Color.MainBackgroundColor, |
| | | TextID = StringId.ManualTriggering, |
| | | }; |
| | | manualView.AddChidren(btnManualText); |
| | | btnManualText.MouseUpEventHandler = (sender, e) => { |
| | |
| | | btnAutoText.TextColor = CSS_Color.MainBackgroundColor; |
| | | manualView.BackgroundColor = CSS_Color.MainBackgroundColor; |
| | | btnManualIcon.UnSelectedImagePath = "FunctionIcon/DoorLock/ManualTriggerIcon_blue.png"; |
| | | btnAutoText.TextColor = CSS_Color.MainColor; |
| | | btnManualText.TextColor = CSS_Color.MainColor; |
| | | automaitcTipView.Visible = true; |
| | | manualTipView.Visible = false; |
| | | |
| | | }); |
| | | } |
| | |
| | | btnAutoText.TextColor = CSS_Color.MainColor; |
| | | manualView.BackgroundColor = CSS_Color.MainColor; |
| | | btnManualIcon.UnSelectedImagePath = "FunctionIcon/DoorLock/ManualTriggerIcon_white.png"; |
| | | btnAutoText.TextColor = CSS_Color.MainBackgroundColor; |
| | | btnManualText.TextColor = CSS_Color.MainBackgroundColor; |
| | | automaitcTipView.Visible = false; |
| | | manualTipView.Visible = true; |
| | | |
| | | }); |
| | | } |
| | |
| | | |
| | | if(faceUnlockSetup.mode == 0) |
| | | { |
| | | automaitcView.Visible = true; |
| | | manualView.Visible = false; |
| | | automaitcTipView.Visible = true; |
| | | manualTipView.Visible = false; |
| | | } |
| | | else |
| | | { |
| | | automaitcView.Visible = false; |
| | | manualView.Visible = true; |
| | | automaitcTipView.Visible = false; |
| | | manualTipView.Visible = true; |
| | | } |
| | | |
| | | } |
| | | FrameLayout automaitcView; |
| | | FrameLayout manualView; |
| | | FrameLayout automaitcTipView; |
| | | FrameLayout manualTipView; |
| | | |
| | | /// <summary> |
| | | /// 加载自动触发方式提示 |
| | | /// </summary> |
| | | void loadAutomaitcTipView() |
| | | { |
| | | automaitcView = new FrameLayout() |
| | | automaitcTipView = new FrameLayout() |
| | | { |
| | | Y = Application.GetRealHeight(128), |
| | | Y = Application.GetRealHeight(128 + 64), |
| | | Height = Application.GetRealHeight(667 - 128 - 64), |
| | | BackgroundColor = CSS_Color.MainBackgroundColor |
| | | }; |
| | | bodyView.AddChidren(automaitcView); |
| | | bodyView.AddChidren(automaitcTipView); |
| | | |
| | | var btnAutomaitcImage = new Button() |
| | | { |
| | |
| | | Height = Application.GetRealWidth(200), |
| | | UnSelectedImagePath = "FunctionIcon/DoorLock/FaceUnlockImage.png", |
| | | }; |
| | | automaitcView.AddChidren(btnAutomaitcImage); |
| | | automaitcTipView.AddChidren(btnAutomaitcImage); |
| | | |
| | | var btnAutomaitcTip = new Button() |
| | | { |
| | |
| | | IsMoreLines = true, |
| | | TextID = StringId.FaceUnlockTip |
| | | }; |
| | | automaitcView.AddChidren(btnAutomaitcTip); |
| | | automaitcTipView.AddChidren(btnAutomaitcTip); |
| | | |
| | | var btnAutomaitcNote = new Button() |
| | | { |
| | |
| | | TextColor = CSS_Color.PromptingColor1, |
| | | TextID = StringId.FaceUnlockNote, |
| | | }; |
| | | automaitcView.AddChidren(btnAutomaitcNote); |
| | | automaitcTipView.AddChidren(btnAutomaitcNote); |
| | | |
| | | } |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | void loadManualTipView() |
| | | { |
| | | manualView = new FrameLayout() |
| | | manualTipView = new FrameLayout() |
| | | { |
| | | Y = Application.GetRealHeight(128), |
| | | Y = Application.GetRealHeight(128 + 64), |
| | | Height = Application.GetRealHeight(667 - 128 - 64), |
| | | BackgroundColor = CSS_Color.MainBackgroundColor |
| | | }; |
| | | bodyView.AddChidren(manualView); |
| | | bodyView.AddChidren(manualTipView); |
| | | |
| | | var btnNumber1 = new Button() |
| | | { |
| | | X = Application.GetRealWidth(84), |
| | | //Y = Application.GetRealHeight() |
| | | Width = Application.GetRealWidth(24), |
| | | Height = Application.GetRealWidth(24), |
| | | Radius = (uint)Application.GetRealWidth(12), |
| | | BorderColor = CSS_Color.MainColor, |
| | | BorderWidth = 1, |
| | | TextSize = CSS_FontSize.SubheadingFontSize, |
| | | TextColor = CSS_Color.MainColor, |
| | | TextAlignment = TextAlignment.Center, |
| | | Text = "1", |
| | | }; |
| | | manualTipView.AddChidren(btnNumber1); |
| | | |
| | | var btnNumber2 = new Button() |
| | | { |
| | | X = Application.GetRealWidth(267), |
| | | //Y = Application.GetRealHeight() |
| | | Width = Application.GetRealWidth(24), |
| | | Height = Application.GetRealWidth(24), |
| | | Radius = (uint)Application.GetRealWidth(12), |
| | | BorderColor = CSS_Color.MainColor, |
| | | BorderWidth = 1, |
| | | TextSize = CSS_FontSize.SubheadingFontSize, |
| | | TextColor = CSS_Color.MainColor, |
| | | TextAlignment = TextAlignment.Center, |
| | | Text = "2", |
| | | }; |
| | | manualTipView.AddChidren(btnNumber2); |
| | | |
| | | var btnImage1 = new Button() |
| | | { |
| | | X = Application.GetRealWidth(16), |
| | | Y = Application.GetRealHeight(31), |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Width = Application.GetRealWidth(160), |
| | | Height = Application.GetRealWidth(160), |
| | | UnSelectedImagePath = "FunctionIcon/DoorLock/TouchUnlcokImage.png", |
| | | }; |
| | | manualView.AddChidren(btnImage1); |
| | | manualTipView.AddChidren(btnImage1); |
| | | |
| | | var btnAutomaitcImage = new Button() |
| | | { |
| | | X = btnImage1.Right + Application.GetRealWidth(24), |
| | | Y = Application.GetRealHeight(31), |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Width = Application.GetRealWidth(160), |
| | | Height = Application.GetRealWidth(160), |
| | | UnSelectedImagePath = "FunctionIcon/DoorLock/FaceUnlockImage.png", |
| | | }; |
| | | manualView.AddChidren(btnAutomaitcImage); |
| | | manualTipView.AddChidren(btnAutomaitcImage); |
| | | |
| | | var btnManualTip = new Button() |
| | | { |
| | |
| | | IsMoreLines = true, |
| | | TextID = StringId.FaceManualUnlockTip |
| | | }; |
| | | manualView.AddChidren(btnManualTip); |
| | | manualTipView.AddChidren(btnManualTip); |
| | | } |
| | | } |
| | | } |