From c3727a2872f7a396ea9ad847aefb4d0b29d745bf Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期五, 13 五月 2022 23:47:56 +0800
Subject: [PATCH] 自研西墨可视对讲

---
 HDL-ON_Android/Properties/AndroidManifest.xml                |    2 
 HDL_ON/UI/UI2/FuntionControlView/Video/VideoMainView.cs      |  350 +++++++++++++++++++++++++++-
 HDL_ON/UI/UI2/FuntionControlView/Video/VideoSend.cs          |   38 ++
 HDL-ON_Android/Assets/Language.ini                           |   10 
 HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs           |    4 
 HDL-ON_Android/Resources/values-zh/strings.xml               |    2 
 HDL_ON/Common/ImageUtlis.cs                                  |   41 +++
 HDL_ON/DAL/Mqtt/MqttClient.cs                                |    2 
 HDL_ON/HDL_ON.projitems                                      |    1 
 HDL_ON/UI/UI2/FuntionControlView/Video/ObjectClass.cs        |    5 
 HDL-ON_iOS/Resources/Language.ini                            |    4 
 HDL_ON/DAL/Server/NewAPI.cs                                  |   15 +
 HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs         |    4 
 HDL_ON/Common/R.cs                                           |    5 
 HDL_ON/DAL/Server/HttpServerRequest.cs                       |   17 +
 HDL_ON/DAL/DriverLayer/Control.cs                            |    1 
 HDL_ON/UI/UI2/FuntionControlView/Video/WanderingAlarmPage.cs |  188 +++++++++++++++
 HDL_ON/UI/UI1-Login/LoginPage.cs                             |    1 
 HDL-ON_Android/Other/JPush/JPushReceiver.cs                  |    2 
 19 files changed, 659 insertions(+), 33 deletions(-)

diff --git a/HDL-ON_Android/Assets/Language.ini b/HDL-ON_Android/Assets/Language.ini
index 996bad9..74688a6 100644
--- a/HDL-ON_Android/Assets/Language.ini
+++ b/HDL-ON_Android/Assets/Language.ini
@@ -527,6 +527,7 @@
 539=Smart panel
 540=In Alarm
 541=Monitoring
+542=Wandering alarm
 
 
 1000=Room Humidity
@@ -1681,6 +1682,7 @@
 539=鏅鸿兘闈㈡澘
 540=鎶ヨ涓�
 541=鐩戞帶涓�
+542=寰樺緤鎶ヨ
  
 1000=瀹ゅ唴婀垮害
 1001=绔ラ攣
@@ -2811,7 +2813,9 @@
 537=Humidity statistics
 538=Uint
 539=Smart panel
-419=袧芯褉屑邪谢褜薪褘泄
+540=袧芯褉屑邪谢褜薪褘泄
+541=Monitoring
+542=Wandering alarm
 
 
 
@@ -3961,13 +3965,13 @@
 533=Statistical Chart
 534=Data
 535=Dew point temperature
-536=Temperature statistics
+536=Temperature statistics  
 537=Humidity statistics
 538=Uint
 539=Smart panel
 540=En alarma
 541=Monitoring
-
+542=Wandering alarm
 
 
 1000=Humedad de ambiente
diff --git a/HDL-ON_Android/Other/JPush/JPushReceiver.cs b/HDL-ON_Android/Other/JPush/JPushReceiver.cs
index 4fdec05..3b0cf2b 100644
--- a/HDL-ON_Android/Other/JPush/JPushReceiver.cs
+++ b/HDL-ON_Android/Other/JPush/JPushReceiver.cs
@@ -257,7 +257,7 @@
             {
                 while (MainPage.BasePageView == null)
                 {
-                    System.Threading.Thread.Sleep(300);
+                    System.Threading.Thread.Sleep(300);
                 }
                 Shared.Application.RunOnMainThread(() =>
                 {
diff --git a/HDL-ON_Android/Properties/AndroidManifest.xml b/HDL-ON_Android/Properties/AndroidManifest.xml
index 7331c9d..7df8787 100644
--- a/HDL-ON_Android/Properties/AndroidManifest.xml
+++ b/HDL-ON_Android/Properties/AndroidManifest.xml
@@ -1,6 +1,6 @@
 锘�<?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.5.6" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202205061">
-	<uses-sdk android:minSdkVersion="28" android:targetSdkVersion="30" />
+	<uses-sdk android:minSdkVersion="28" android:targetSdkVersion="28" />
 	<!--鍙嬬洘-->
 	<!--<uses-sdk android:minSdkVersion="8"></uses-sdk>-->
 	<!--<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>-->
diff --git a/HDL-ON_Android/Resources/values-zh/strings.xml b/HDL-ON_Android/Resources/values-zh/strings.xml
index 8bba32d..52267b1 100644
--- a/HDL-ON_Android/Resources/values-zh/strings.xml
+++ b/HDL-ON_Android/Resources/values-zh/strings.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <resources>
-	<string name="app_name">ON_Plus</string>
+	<string name="app_name">On_Pro</string>
 	<string name="action_settings">璁剧疆</string>
 	<string name="video_screenshot">鎴浘</string>
 	<string name="video_unlock">寮�閿�</string>
diff --git a/HDL-ON_iOS/Resources/Language.ini b/HDL-ON_iOS/Resources/Language.ini
index 48147d4..74688a6 100644
--- a/HDL-ON_iOS/Resources/Language.ini
+++ b/HDL-ON_iOS/Resources/Language.ini
@@ -527,6 +527,7 @@
 539=Smart panel
 540=In Alarm
 541=Monitoring
+542=Wandering alarm
 
 
 1000=Room Humidity
@@ -1681,6 +1682,7 @@
 539=鏅鸿兘闈㈡澘
 540=鎶ヨ涓�
 541=鐩戞帶涓�
+542=寰樺緤鎶ヨ
  
 1000=瀹ゅ唴婀垮害
 1001=绔ラ攣
@@ -2813,6 +2815,7 @@
 539=Smart panel
 540=袧芯褉屑邪谢褜薪褘泄
 541=Monitoring
+542=Wandering alarm
 
 
 
@@ -3968,6 +3971,7 @@
 539=Smart panel
 540=En alarma
 541=Monitoring
+542=Wandering alarm
 
 
 1000=Humedad de ambiente
diff --git a/HDL_ON/Common/ImageUtlis.cs b/HDL_ON/Common/ImageUtlis.cs
index 918483d..fe739d5 100644
--- a/HDL_ON/Common/ImageUtlis.cs
+++ b/HDL_ON/Common/ImageUtlis.cs
@@ -466,6 +466,47 @@
             }
         }
 
+
+
+        /// <summary>
+        /// 涓嬭浇鐢ㄦ埛澶村儚
+        /// </summary>
+        /// <param name="imageUrl"></param>
+        /// <param name="ignoreCache">蹇界暐缂撳瓨</param>
+        /// <param name="regionUrl">鎸囧畾鏈嶅姟鍣ㄥ煙鍚�,浼犵┖涓轰娇鐢ㄥ綋鍓嶇敤鎴峰湴鍧�</param>
+        /// <returns></returns>
+        public byte[] DownImageByImageUrl(string imageUrl, bool ignoreCache = false)
+        {
+            try
+            {
+                if (string.IsNullOrEmpty(imageUrl)) return null;
+
+                byte[] imageBytes;
+                if (!ignoreCache && Exists(imageUrl))
+                {
+                    //鏈湴鏈夌紦瀛�
+                    imageBytes = ReadFile(imageUrl);
+                }
+                else
+                {
+                    //涓嬭浇
+                    imageBytes = HttpUtil.HttpsDownload(imageUrl);
+                    if (imageBytes != null)
+                    {
+                        //淇濆瓨鍒版湰鍦�
+                        WriteFileByBytes(imageUrl, imageBytes);
+                    }
+
+                }
+                return imageBytes;
+            }
+            catch
+            {
+                return null;
+            }
+        }
+
+
         #endregion
     }
 }
diff --git a/HDL_ON/Common/R.cs b/HDL_ON/Common/R.cs
index 2fe7f18..afca8c7 100644
--- a/HDL_ON/Common/R.cs
+++ b/HDL_ON/Common/R.cs
@@ -4,6 +4,11 @@
 {
     public static class StringId
     {
+
+        /// <summary>
+        /// 寰樺緤鎶ヨ
+        /// </summary>
+        public const int WanderingAlarm = 542;
         /// <summary>
         /// 鐩戞帶涓�
         /// </summary>
diff --git a/HDL_ON/DAL/DriverLayer/Control.cs b/HDL_ON/DAL/DriverLayer/Control.cs
index 5bd24e8..bd24f80 100644
--- a/HDL_ON/DAL/DriverLayer/Control.cs
+++ b/HDL_ON/DAL/DriverLayer/Control.cs
@@ -460,6 +460,7 @@
                         var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ControlFunctionTopic, functionControlDataJson);
                         new Control_Udp().SendLocalHdlLinkData(sendBytes, functionControlDataObj.id,resend);
                         MainPage.Log($"鏈湴閫氳 鍙戦�丠DL-Link鏁版嵁:{functionControlDataJson}");
+                        //Control.Ins.MsgInfoList.Add($"鏈湴閫氳 鍙戦�丠DL-Link鏁版嵁:{functionControlDataJson}"+"\r\n");
                     }
                 }
                 //杩滅▼閫氳
diff --git a/HDL_ON/DAL/Mqtt/MqttClient.cs b/HDL_ON/DAL/Mqtt/MqttClient.cs
index 60f8d2a..1f26a36 100644
--- a/HDL_ON/DAL/Mqtt/MqttClient.cs
+++ b/HDL_ON/DAL/Mqtt/MqttClient.cs
@@ -518,6 +518,8 @@
                                     var revString = Encoding.UTF8.GetString(bytes);
                                     MainPage.Log($"mqtt 鐘舵�佹洿鏂�:{revString}");
                                     Control.Ins.UpdataFunctionStatus(revString, null, true);
+                                    //Control.Ins.MsgInfoList.Add($"mqtt 鐘舵�佹洿鏂�:{revString}");
+
                                     //Control.Ins.MsgInfoList.Add(revString + "\r\n");
                                 }
                                 //涓�绔彛鏁版嵁瑙f瀽
diff --git a/HDL_ON/DAL/Server/HttpServerRequest.cs b/HDL_ON/DAL/Server/HttpServerRequest.cs
index 0fdea4a..16750aa 100644
--- a/HDL_ON/DAL/Server/HttpServerRequest.cs
+++ b/HDL_ON/DAL/Server/HttpServerRequest.cs
@@ -2621,6 +2621,23 @@
             var pack = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_FL_Check, requestJson);
             return pack;
         }
+        /// <summary>
+        /// 鑾峰彇闂ㄥ彛鏈哄緲寰婃姤璀︽暟鎹�
+        /// </summary>
+        /// <param name="deviceId"></param>
+        /// <returns></returns>
+        public ResponsePackNew GetAlarmRecords(string deviceId,string alarmType = "PROWLER_ALARM")
+        {
+            Dictionary<string, object> d = new Dictionary<string, object>();
+            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
+            d.Add("deviceId", deviceId);
+            d.Add("alarmType", alarmType);
+            var requestJson = HttpUtil.GetSignRequestJson(d);
+            var pack = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_ALARM_RECORDS, requestJson);
+            return pack;
+
+        }
+
         #endregion
 
         #region 鈻� 闂ㄩ攣鐩稿叧____________________________
diff --git a/HDL_ON/DAL/Server/NewAPI.cs b/HDL_ON/DAL/Server/NewAPI.cs
index d1d23bb..b569143 100644
--- a/HDL_ON/DAL/Server/NewAPI.cs
+++ b/HDL_ON/DAL/Server/NewAPI.cs
@@ -668,6 +668,21 @@
         /// 鍔ㄦ�佸瘑鐮�/浜岀淮鐮佸紑閿�
         /// </summary>
         public const string API_POST_FL_QRcode = "http://112.74.164.111:180/api.php/Device/setdynamicpwd";
+        /// <summary>
+        /// 涓存椂瀵嗙爜
+        /// 浜岀淮鐮�
+        /// </summary>
+        public const string API_Post_Temporary_Password = "/home-wisdom/app/freeview/temppwd/add";
+        /// <summary>
+        /// 鑾峰彇闂ㄧ浜岀淮鐮�
+        /// </summary>
+        public const string API_POST_OwnerQRCode = "/community-wisdom/doorDevice/getOwnerQRCode";
+        /// <summary>
+        /// 寰樺緤鎶ヨ
+        /// </summary>
+        public const string API_POST_ALARM_RECORDS = "/home-wisdom/app/device/alarmRecords/listByPage";
+                                                      
+
         #endregion
 
 
diff --git a/HDL_ON/HDL_ON.projitems b/HDL_ON/HDL_ON.projitems
index 747b9a5..948c13d 100644
--- a/HDL_ON/HDL_ON.projitems
+++ b/HDL_ON/HDL_ON.projitems
@@ -498,6 +498,7 @@
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Form\DeviceFunction4CardCommonForm.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\ContentView\FhContentView.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\ContentView\AcContentView.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Video\WanderingAlarmPage.cs" />
   </ItemGroup>
   <ItemGroup>
     <Folder Include="$(MSBuildThisFileDirectory)Entity\Device\" />
diff --git a/HDL_ON/UI/UI1-Login/LoginPage.cs b/HDL_ON/UI/UI1-Login/LoginPage.cs
index 8c52aca..988eb0c 100644
--- a/HDL_ON/UI/UI1-Login/LoginPage.cs
+++ b/HDL_ON/UI/UI1-Login/LoginPage.cs
@@ -217,6 +217,7 @@
                     //etAccount.Text = "18316120654";//tujie
                     //etAccount.Text = "13450425807";//榛勭婧� knx椤圭洰
                     etAccount.Text = "18244942707";
+                    etAccount.Text = "13826414433";//闄堜紵娼� 鑷爺鍙瀵硅
                 }
                 else
                 {
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs b/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs
index ee6432c..6edd835 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs
@@ -993,7 +993,9 @@
                 })
                 { IsBackground = true }.Start();
             }
-            catch { }
+            catch (Exception ex) {
+                MainPage.Log("涓婁紶鍥剧墖寮傚父锛�" + ex.Message);
+            }
         }
     }
 }
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
index 703cb02..b4008c8 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
@@ -928,7 +928,7 @@
 #endif
             #endregion
 
-            #region 鑾峰彇鏀寔
+            //#region 鑾峰彇鏀寔
             //FrameLayout supView = new FrameLayout()
             //{
             //    Height = Application.GetRealWidth(44),
@@ -1022,7 +1022,7 @@
             //    BackgroundColor = CSS_Color.DividingLineColor
             //};
             //supView.AddChidren(btnSupportViewLine);
-            #endregion
+            //#endregion
 
             #region 鍏充簬On Pro
             FrameLayout aboutView = new FrameLayout()
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Video/ObjectClass.cs b/HDL_ON/UI/UI2/FuntionControlView/Video/ObjectClass.cs
index fc82b32..36e51aa 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Video/ObjectClass.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Video/ObjectClass.cs
@@ -132,6 +132,11 @@
         /// </summary>
         public string deviceName = string.Empty;
         /// <summary>
+        /// 鍖哄垎鏄媱鑰愬厠杩樻槸鑷爺
+        /// 鐩墠鍙湁鑷爺鏈夊�硷細door.gate
+        /// </summary>
+        public string spk = string.Empty;
+        /// <summary>
         /// 璁惧id銆佸簭鍒楀彿銆乽uid
         /// </summary>
         public string deviceId = string.Empty;
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Video/VideoMainView.cs b/HDL_ON/UI/UI2/FuntionControlView/Video/VideoMainView.cs
index 6d0dd75..0f9942c 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Video/VideoMainView.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Video/VideoMainView.cs
@@ -2,14 +2,16 @@
 using HDL_ON.UI.Music;
 using System.Collections.Generic;
 using Shared;
-using HDL_ON.Stan;
-using ZXing.QrCode.Internal;
-using static HDL_ON.UI.UI2.FuntionControlView.Video.VideoMethod;
+using HDL_ON.UI.CSS;
 
 namespace HDL_ON.UI.UI2.FuntionControlView.Video
 {
     public class VideoMainView : FrameLayout
     {
+
+        List<Video> ximoVideoList = new List<Video>();
+
+
         /// <summary>
         /// 鍔犺浇鍙瀵硅UI
         /// </summary>
@@ -17,6 +19,8 @@
         /// <param name="videoList">鍙瀵硅鍒楄〃</param>
         public void Show(List<CallView> listCall, List<Video> videoList)
         {
+            ximoVideoList = videoList.FindAll((obj) => obj.spk == "door.gate");
+
             #region 甯冨眬鐣岄潰
             this.BackgroundColor = MusicColor.ViewColor;
             var topView = new TopView();
@@ -191,11 +195,17 @@
             };
             bjFl.AddChidren(vv);
 
-            bool bol = haveFlVideo(videoList);
+            bool bol = haveQRCodeVideo(videoList);
             if (bol)
             {
                 //闂ㄧ浜岀淮鐮佸浐瀹氭湁鐨�,铏氭嫙涓�涓嚭鏉�
-                videoList.Add(new Video { deviceName = Language.StringByID(StringId.menjinerweima), interphoneType = "100" });
+                videoList.Add(new Video { deviceName = Language.StringByID(StringId.menjinerweima), interphoneType = "100",devType = "100" });
+            }
+            if (ximoVideoList.Count > 0)
+            {
+                //寰樺緤鎶ヨ
+                videoList.Add(new Video { deviceName = Language.StringByID(StringId.WanderingAlarm), interphoneType = "222", devType = "222" });
+                
             }
             //鏁扮粍涓暟
             //int value = 15;
@@ -217,10 +227,13 @@
             };
             vv.AddChidren(fL);
             int line = 0;
+
+
             #endregion
             for (int i = 1, j = 0; i <= videoList.Count; i++, j++)
             {
                 var video = videoList[i - 1];
+             
                 #region
                 var fLayout = new FrameLayout
                 {
@@ -239,6 +252,7 @@
                     UnSelectedImagePath = "VideoIcon/weiqiangji.png",
                 };
                 fLayout.AddChidren(iconBtn);
+
 
                 var deviceNameBtn = new Button
                 {
@@ -267,19 +281,28 @@
                 //闂ㄥ彛鏈虹殑鐐瑰嚮浜嬩欢
                 clickBtn.MouseUpEventHandler += (sender, e) =>
                 {
+                    if (video.devType == "VisitorQrCode")
+                    {
+
+                        return;
+                    }
+                    else if (video.devType == "FaceManagement")
+                    {
+
+                        return;
+                    }
+
                     var video2 = clickBtn.Tag as Video;
                     if (video2.devType == "100")
                     {
-                        //闂ㄧ浜岀淮鐮佸浐瀹氭湁鐨�
-                        VideoSend.GetQRcode(this, video2, (tag, paw) =>
-                        {
-                            if (tag)
-                            {
-                                //娉ㄦ剰锛氬瘑鐮佹湁鍙兘寤舵椂1鍒嗛挓鐢熸晥
-                                View.ShowDialog showDialog = new View.ShowDialog();
-                                showDialog.QRcode(paw);
-                            }
-                        });
+                        ChooseVideoShowQRCode();
+
+                    }
+                    else if(video2.devType == "222")
+                    {
+                        ChooseAlarmShow();
+
+
                     }
                     else
                     {
@@ -544,20 +567,313 @@
 
 
         //鍒ゆ柇鏄惁鏈� 涓版灄鍙瀵硅
-        private bool haveFlVideo(List<Video> videoList)
+        private bool haveQRCodeVideo(List<Video> videoList)
         {
             bool bol = false;
 
             for (int i = 0; i < videoList.Count; i++)
             {
                 var _video = videoList[i];
-                if (_video.interphoneType == "FLVI")
+                if (_video.interphoneType == "FLVI"|| _video.spk == "door.gate")
+                {
                     return true;
+                }
             }
 
             return bol;
         }
 
+
+        /// <summary>
+        /// 鍔犺浇鎻愮ず寮圭獥
+        /// </summary>
+        public void ChooseVideoShowQRCode()
+        {
+            Dialog dialog = new Dialog()
+            {
+                BackgroundColor = CSS_Color.DialogTransparentColor1,
+            };
+
+            FrameLayout dialogView = new FrameLayout();
+            dialog.AddChidren(dialogView);
+            dialogView.MouseUpEventHandler = (sender, e) => {
+                dialog.Close();
+            };
+
+            var contentView = new FrameLayout()
+            {
+                Gravity = Gravity.Center,
+                Width = Application.GetRealWidth(270),
+                Height = Application.GetRealHeight(280),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                BorderColor = 0x00000000,
+                BorderWidth = 0,
+                Radius = (uint)Application.GetMinRealAverage(10),
+            };
+            dialogView.AddChidren(contentView);
+
+            var btnTitle = new Button()
+            {
+                Height = Application.GetRealHeight(64),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextID = StringId.menjinerweima,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+            };
+            contentView.AddChidren(btnTitle);
+
+            var listView = new VerticalScrolViewLayout()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(70),
+                Width = Application.GetRealWidth(230),
+                Height = Application.GetRealHeight(200),
+            };
+            contentView.AddChidren(listView);
+
+            if (ximoVideoList.Count == 1)
+            {
+                Loading loading = new Loading();
+                contentView.AddChidren(loading);
+                loading.Start("");
+                new System.Threading.Thread(() =>
+                {
+                    try
+                    {
+                        var pack = VideoSend.GetQRcode();
+                        var pairs = Newtonsoft.Json.JsonConvert.DeserializeObject<List<AccessControlQRode>>(pack.Data.ToString());
+                        if (pairs.Count > 0)
+                        {
+                            Application.RunOnMainThread(() =>
+                            {
+                                ImageView codeImage = new ImageView()
+                                {
+                                    Gravity = Gravity.Center,
+                                    Height = Application.GetRealWidth(200),
+                                    Width = Application.GetRealWidth(200),
+                                    ImageBytes = Scan.BytesFromText(pairs[0].qrcode, Application.GetRealWidth(200), Application.GetRealWidth(200)),
+                                };
+                                contentView.AddChidren(codeImage);
+                            });
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        MainPage.Log($"鑾峰彇闂ㄧ浜岀淮鐮佸紓甯革細{ex.Message}");
+                    }
+                    finally
+                    {
+                        Application.RunOnMainThread(() =>
+                        {
+                            if (loading != null)
+                            {
+                                loading.Hide();
+                                loading.RemoveFromParent();
+                            }
+                        });
+                    }
+                })
+                { IsBackground = true }.Start();
+            }
+            else
+            {
+
+                foreach (var v in ximoVideoList)
+                {
+                    Button btnMsg = new Button()
+                    {
+                        Gravity = Gravity.CenterHorizontal,
+                        Height = Application.GetRealHeight(50),
+                        Width = Application.GetRealHeight(160),
+                        TextAlignment = TextAlignment.Center,
+                        TextColor = CSS_Color.TextualColor,
+                        TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                        Text = v.deviceName,
+                        Radius = (uint)Application.GetRealWidth(5),
+                        BackgroundColor = CSS_Color.DividingLineColor,
+                        IsMoreLines = true,
+                    };
+                    listView.AddChidren(btnMsg);
+
+                    listView.AddChidren(new Button() { Height = Application.GetRealHeight(12) });
+
+                    btnMsg.MouseUpEventHandler = (sender, e) =>
+                    {
+
+
+                        if (v.spk == "door.gate")
+                        {
+                            Loading loading = new Loading();
+                            contentView.AddChidren(loading);
+                            loading.Start("");
+                            new System.Threading.Thread(() =>
+                            {
+                                try
+                                {
+                                    var pack = VideoSend.GetQRcode();
+                                    var pairs = Newtonsoft.Json.JsonConvert.DeserializeObject<List<AccessControlQRode>>(pack.Data.ToString());
+                                    if (pairs.Count > 0)
+                                    {
+                                        Application.RunOnMainThread(() =>
+                                        {
+                                            ImageView codeImage = new ImageView()
+                                            {
+                                                Gravity = Gravity.Center,
+                                                Height = Application.GetRealWidth(200),
+                                                Width = Application.GetRealWidth(200),
+                                                ImageBytes = Scan.BytesFromText(pairs[0].qrcode, Application.GetRealWidth(200), Application.GetRealWidth(200)),
+                                            };
+                                            contentView.AddChidren(codeImage);
+                                        });
+                                    }
+                                }
+                                catch (Exception ex)
+                                {
+                                    MainPage.Log($"鑾峰彇闂ㄧ浜岀淮鐮佸紓甯革細{ex.Message}");
+                                }
+                                finally
+                                {
+                                    Application.RunOnMainThread(() =>
+                                    {
+                                        if (loading != null)
+                                        {
+                                            loading.Hide();
+                                            loading.RemoveFromParent();
+                                        }
+                                    });
+                                }
+                            })
+                            { IsBackground = true }.Start();
+                            return;
+                        }
+
+                        //闂ㄧ浜岀淮鐮佸浐瀹氭湁鐨�
+                        VideoSend.GetQRcode(this, v, (tag, paw) =>
+                        {
+                            if (tag)
+                            {
+                            //娉ㄦ剰锛氬瘑鐮佹湁鍙兘寤舵椂1鍒嗛挓鐢熸晥
+                            View.ShowDialog showDialog = new View.ShowDialog();
+                                showDialog.QRcode(paw);
+                            }
+                        });
+                        dialog.Close();
+                    };
+                }
+            }
+            dialog.Show();
+
+        }
+
+
+        /// <summary>
+        /// 閫夋嫨寰樺緤鎶ヨ鍒楄〃鏄剧ず
+        /// </summary>
+        public void ChooseAlarmShow()
+        {
+            Dialog dialog = new Dialog()
+            {
+                BackgroundColor = CSS_Color.DialogTransparentColor1,
+            };
+
+            FrameLayout dialogView = new FrameLayout();
+            dialog.AddChidren(dialogView);
+            dialogView.MouseUpEventHandler = (sender, e) => {
+                dialog.Close();
+            };
+
+            var contentView = new FrameLayout()
+            {
+                Gravity = Gravity.Center,
+                Width = Application.GetRealWidth(270),
+                Height = Application.GetRealHeight(280),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                BorderColor = 0x00000000,
+                BorderWidth = 0,
+                Radius = (uint)Application.GetMinRealAverage(10),
+            };
+            dialogView.AddChidren(contentView);
+
+            var btnTitle = new Button()
+            {
+                Height = Application.GetRealHeight(64),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextID = StringId.menjinerweima,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+            };
+            contentView.AddChidren(btnTitle);
+
+            var listView = new VerticalScrolViewLayout()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(70),
+                Width = Application.GetRealWidth(230),
+                Height = Application.GetRealHeight(200),
+            };
+            contentView.AddChidren(listView);
+
+            if (ximoVideoList.Count == 1)
+            {
+                var wanderingAlarmPage = new WanderingAlarmPage();
+                MainPage.BasePageView.AddChidren(wanderingAlarmPage);
+                wanderingAlarmPage.LoadPage(ximoVideoList[0].deviceId);
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+
+            }
+            else
+            {
+
+                foreach (var v in ximoVideoList)
+                {
+                    Button btnMsg = new Button()
+                    {
+                        Gravity = Gravity.CenterHorizontal,
+                        Height = Application.GetRealHeight(50),
+                        Width = Application.GetRealHeight(160),
+                        TextAlignment = TextAlignment.Center,
+                        TextColor = CSS_Color.TextualColor,
+                        TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                        Text = v.deviceName,
+                        Radius = (uint)Application.GetRealWidth(5),
+                        BackgroundColor = CSS_Color.DividingLineColor,
+                        IsMoreLines = true,
+                    };
+                    listView.AddChidren(btnMsg);
+
+                    listView.AddChidren(new Button() { Height = Application.GetRealHeight(12) });
+
+                    btnMsg.MouseUpEventHandler = (sender, e) =>
+                    {
+
+
+                        var wanderingAlarmPage = new WanderingAlarmPage();
+                        MainPage.BasePageView.AddChidren(wanderingAlarmPage);
+                        wanderingAlarmPage.LoadPage(v.deviceId);
+                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+
+                        dialog.Close();
+                    };
+                }
+            }
+            dialog.Show();
+
+        }
+
+
     }
 
+    public class AccessControlQRode
+    {
+        public string title = string.Empty;
+        public string codeType = string.Empty;
+        public string userName = string.Empty;
+        public string houseFullName = string.Empty;
+        public string communityName = string.Empty;
+        public string desc = string.Empty;
+        public string businessType = string.Empty;
+        public string qrcode = string.Empty;
+    }
+
+
 }
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Video/VideoSend.cs b/HDL_ON/UI/UI2/FuntionControlView/Video/VideoSend.cs
index ae759bb..9388f8b 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Video/VideoSend.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Video/VideoSend.cs
@@ -3,6 +3,7 @@
 using System.IO;
 using System.Net;
 using HDL_ON.DAL.Server;
+using HDL_ON.Entity;
 using HDL_ON.UI.UI2.PersonalCenter.PirDevice;
 using Newtonsoft.Json.Linq;
 using Shared;
@@ -81,6 +82,18 @@
             return revertObj;
         }
 
+        public static ResponsePackNew GetQRcode()
+        {
+            var jobject = new JObject();
+            jobject.Add("userId", UserInfo.Current.ID);
+            jobject.Add("userType", "C");
+            jobject.Add("houseId", DB_ResidenceData.Instance.CurrentRegion.id);
+            jobject.Add("codeSecond", "60");
+            var requestJson = HttpUtil.GetSignRequestJson(jobject);//鏁版嵁绛惧悕
+            var revertObj = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_OwnerQRCode, requestJson);
+            return revertObj;
+        }
+
         /// <summary>
         /// 涓婃姤鍔ㄦ�佸紑閿佸瘑鐮�(娉ㄦ剰锛氬瘑鐮佹湁鍙兘寤舵椂1鍒嗛挓鐢熸晥)
         /// </summary>
@@ -90,12 +103,21 @@
             bool if_bool = false;
             //涓存椂瀵嗙爜
             string pwd = VideoMethod.GetCode();
-            var jobject = new JObject();
            jobject.Add("communityID", video.flRoomBindVO.flCmtId);//绀惧尯ID
-            jobject.Add("fromTime", VideoMethod.GetCurrentTimeStamp());//寮�濮嬫椂闂�
-            jobject.Add("validTime", VideoMethod.GetTomorrowTimeStamp());//鏈夋晥鏃堕棿
-            jobject.Add("unitno", video.flRoomBindVO.flBuildingId);//鍗曞厓鍙�
-            jobject.Add("roomno", video.flRoomBindVO.flRoomId);//鎴块棿鍙�
-            jobject.Add("code", pwd);
            jobject.Add("userKey", video.flRoomBindVO.id);
            jobject.Add("timestamp", VideoMethod.GetCurrentTimeStamp());
            jobject.Add("secretKey", video.flRoomBindVO.flSecretKey);
            jobject.Add("method", "setdynamicpwd");
            jobject.Add("numTimes", "5");
+            var jobject = new JObject();
+
+
+                jobject.Add("communityID", video.flRoomBindVO.flCmtId);//绀惧尯ID
+                jobject.Add("fromTime", VideoMethod.GetCurrentTimeStamp());//寮�濮嬫椂闂�
+                jobject.Add("validTime", VideoMethod.GetTomorrowTimeStamp());//鏈夋晥鏃堕棿
+                jobject.Add("unitno", video.flRoomBindVO.flBuildingId);//鍗曞厓鍙�
+                jobject.Add("roomno", video.flRoomBindVO.flRoomId);//鎴块棿鍙�
+                jobject.Add("code", pwd);
+                jobject.Add("userKey", video.flRoomBindVO.id);
+                jobject.Add("timestamp", VideoMethod.GetCurrentTimeStamp());
+                jobject.Add("secretKey", video.flRoomBindVO.flSecretKey);
+                jobject.Add("method", "setdynamicpwd");
+                jobject.Add("numTimes", "5");
+            
             //鍔犺浇log
             Loading loading = new Loading();
             frame.AddChidren(loading);
@@ -104,7 +126,9 @@
             {
                 try
                 {
-                    var str = HttpWebRequest(NewAPI.API_POST_FL_QRcode, jobject.ToString(), "POST");
+                    string str = "";
+
+                    str = HttpWebRequest(NewAPI.API_POST_FL_QRcode, jobject.ToString(), "POST");
                     if (!string.IsNullOrEmpty(str))
                     {
                         var json = JObject.Parse(str);
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Video/WanderingAlarmPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Video/WanderingAlarmPage.cs
new file mode 100644
index 0000000..b39c4ce
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/Video/WanderingAlarmPage.cs
@@ -0,0 +1,188 @@
+锘縰sing System;
+using System.Collections.Generic;
+using HDL_ON.DAL.Server;
+using HDL_ON.UI.CSS;
+using Shared;
+namespace HDL_ON.UI.UI2.FuntionControlView.Video
+{
+    public class WanderingAlarmPage : FrameLayout
+    {
+        FrameLayout bodyView;
+        public WanderingAlarmPage()
+        {
+            bodyView = this;
+        }
+
+        VerticalScrolViewLayout contentView;
+
+        public void LoadPage(string deviceId)
+        {
+            bodyView.BackgroundColor = CSS_Color.MainBackgroundColor;
+            new TopViewDiv(bodyView, Language.StringByID(StringId.WanderingAlarm)).LoadTopView();
+
+            var btnTipMsg = new Button()
+            {
+                Y = Application.GetRealHeight(64),
+                X = Application.GetRealWidth(20),
+                Height = Application.GetRealHeight(58),
+                Width = Application.GetRealWidth(318),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.PromptingColor1,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                Text = "*鍙瀵硅鍙互鑷姩璇嗗埆闂ㄥ彛鍙枒浜哄憳锛屽苟鍙戣捣寰樺緤鎶ヨ璁板綍"
+            };
+            if(Language.CurrentLanguage != "Chinese")
+            {
+                btnTipMsg.Text = "*Visual intercom can automatically identify suspicious persons at the door and initiate wandering alarm records";
+            }
+            bodyView.AddChidren(btnTipMsg);
+
+            contentView = new VerticalScrolViewLayout()
+            {
+                Y = Application.GetRealHeight(64 + 62),
+                Height = Application.GetRealHeight(550),
+            };
+            bodyView.AddChidren(contentView);
+
+            Loading loading = new Loading();
+            bodyView.AddChidren(loading);
+            loading.Start("");
+            new System.Threading.Thread(()=> {
+                try
+                {
+                    HttpServerRequest http = new HttpServerRequest();
+                    var pack = http.GetAlarmRecords(deviceId);
+                    if (pack.Code == StateCode.SUCCESS)
+                    {
+                        var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<AlarmRecordInfoPack>(pack.Data.ToString());
+                        LoadSceneGallery(obj);
+                    }
+                }
+                catch (Exception ex)
+                {
+                    MainPage.Log($"璇诲彇寰樺緤鎶ヨ鏁版嵁寮傚父锛歿ex.Message}");
+                }
+                finally
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        if (loading != null)
+                        {
+                            loading.Hide();
+                            loading.RemoveFromParent();
+                        }
+                    });
+                }
+            }) { IsBackground = true }.Start();
+        }
+        /// <summary>
+        /// 鍔犺浇鍦烘櫙鍥惧簱
+        /// </summary>
+        void LoadSceneGallery(AlarmRecordInfoPack pack)
+        {
+            FrameLayout sceneImageRow = new FrameLayout()
+            {
+                Height = Application.GetRealWidth(128),
+            };
+            Application.RunOnMainThread(() =>
+            {
+                for (int i = 0; i < pack.list.Count; i++)
+                {
+                    var item = pack.list[i];
+                    var imageBytes = ImageUtlis.Current.DownImageByImageUrl(item.alarmImg);
+                    var sceneImageView = new ImageView()
+                    {
+                        Width = Application.GetRealWidth(172),
+                        Height = Application.GetRealHeight(90),
+                        Radius = (uint)Application.GetRealWidth(12),
+                        ImageBytes = imageBytes
+                    };
+                    var btnTime = new Button()
+                    {
+                        Width = Application.GetRealHeight(160),
+                        Height = Application.GetRealHeight(41),
+                        Y = Application.GetRealHeight(90),
+                        Text = Utlis.UnixToDateTimeMS(item.alarmTime).ToString(),
+                        TextColor = CSS_Color.FirstLevelTitleColor,
+                        TextAlignment = TextAlignment.Center
+                    };
+                    if (i % 2 == 0)
+                    {
+                        sceneImageRow = new FrameLayout()
+                        {
+                            Height = Application.GetRealHeight(90 + 53),
+                        };
+                        contentView.AddChidren(sceneImageRow);
+                        sceneImageView.X = Application.GetRealWidth(10);
+                        sceneImageRow.AddChidren(sceneImageView);
+                        btnTime.X = Application.GetRealWidth(10);
+                        sceneImageRow.AddChidren(btnTime);
+
+                    }
+                    else
+                    {
+                        sceneImageView.X = Application.GetRealWidth(194);
+                        sceneImageRow.AddChidren(sceneImageView);
+
+                        btnTime.X = Application.GetRealWidth(194);
+                        sceneImageRow.AddChidren(btnTime);
+                    }
+
+
+                    sceneImageView.MouseUpEventHandler = (sender, e) =>
+                    {
+                        Dialog dialog = new Dialog();
+
+                        FrameLayout dialogContentView = new FrameLayout();
+                        dialog.AddChidren(dialogContentView);
+                        dialogContentView.MouseUpEventHandler = (sender, e) =>
+                        {
+                            dialog.Close();
+                        };
+                        ImageView btnImage = new ImageView()
+                        {
+                            Gravity = Gravity.Center,
+                            Height = Application.GetRealHeight(211),
+                            ImageBytes = sceneImageView.ImageBytes,
+                        };
+                        dialogContentView.AddChidren(btnImage);
+
+
+                        dialog.Show();
+                    };
+                    System.Threading.Thread.Sleep(200);
+
+                }
+            });
+        }
+
+
+    }
+
+    public class AlarmRecordInfoPack
+    {
+        public int totalCount = 0;
+
+        public int totalPage = 0;
+
+        public int pageNo = 0;
+
+        public int pageSize = 0;
+
+        public List<AlarmRecordInfo> list = new List<AlarmRecordInfo>();
+    }
+
+    /// <summary>
+    /// 寰樺緤鎶ヨ淇℃伅
+    /// </summary>
+    public class AlarmRecordInfo
+    {
+        public string alarmImg = string.Empty;
+
+        public long alarmTime;
+
+        public string alarmType = string.Empty;
+
+        public string alarmTypeDesc = string.Empty;
+    }
+}

--
Gitblit v1.8.0