From 58927c8f09e529c1c456657e9ae1a01796588a59 Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期四, 11 五月 2023 16:45:06 +0800
Subject: [PATCH] 优化安防数据加载

---
 HDL-ON_Android/HDL-ON_Android.csproj |    1 
 HDL-ON_Android/Other/SmsReceiver.cs  |   47 +++++++++++++++
 HDL_ON/Common/ApiUtlis.cs            |   80 ++++++++++++--------------
 HDL_ON/Entity/FunctionList.cs        |   30 +++++-----
 4 files changed, 99 insertions(+), 59 deletions(-)

diff --git a/HDL-ON_Android/HDL-ON_Android.csproj b/HDL-ON_Android/HDL-ON_Android.csproj
index e5f0636..367a5c3 100644
--- a/HDL-ON_Android/HDL-ON_Android.csproj
+++ b/HDL-ON_Android/HDL-ON_Android.csproj
@@ -226,6 +226,7 @@
     <Compile Include="Zxing\CustomCaptureActivity.cs" />
     <Compile Include="Zxing\ScanActivity.cs" />
     <Compile Include="LeChengVideo\LeTest.cs" />
+    <Compile Include="Other\SmsReceiver.cs" />
   </ItemGroup>
   <ItemGroup>
     <AndroidAsset Include="Assets\agconnect-services.json" />
diff --git a/HDL-ON_Android/Other/SmsReceiver.cs b/HDL-ON_Android/Other/SmsReceiver.cs
new file mode 100644
index 0000000..cae40aa
--- /dev/null
+++ b/HDL-ON_Android/Other/SmsReceiver.cs
@@ -0,0 +1,47 @@
+锘縰sing System;
+using System.Text;
+using Android.App;
+using Android.Content;
+using Android.Provider;
+using Android.Telephony;
+
+namespace HDL_ON_Android.Other
+{
+    [BroadcastReceiver(Enabled = true, Label = "SMS Receiver")]
+    [IntentFilter(new[] { "android.provider.Telephony.SMS_RECEIVED" })]
+    public class SmsReceiver : BroadcastReceiver
+    {
+        public override void OnReceive(Context context, Intent intent)
+        {
+            if (intent.Action != Telephony.Sms.Intents.SmsReceivedAction)
+                return;
+
+            var bundle = intent.Extras;
+            if (bundle == null)
+                return;
+
+            try
+            {
+                var pdus = (Java.Lang.Object[])bundle.Get("pdus");
+                if (pdus == null)
+                    return;
+
+                var msgs = new SmsMessage[pdus.Length];
+                var sb = new StringBuilder();
+                for (var i = 0; i < msgs.Length; i++)
+                {
+                    msgs[i] = SmsMessage.CreateFromPdu((byte[])pdus[i]);
+                    sb.Append(msgs[i].MessageBody);
+                }
+
+                // 澶勭悊鎺ユ敹鍒扮殑鐭俊鍐呭
+                string message = sb.ToString();
+                // TODO: 澶勭悊鎺ユ敹鍒扮殑鐭俊鍐呭
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine("澶勭悊鎺ユ敹鍒扮殑鐭俊鍐呭寮傚父" + ex.Message);
+            }
+        }
+    }
+}
diff --git a/HDL_ON/Common/ApiUtlis.cs b/HDL_ON/Common/ApiUtlis.cs
index 9661856..cf3249d 100644
--- a/HDL_ON/Common/ApiUtlis.cs
+++ b/HDL_ON/Common/ApiUtlis.cs
@@ -173,7 +173,7 @@
                             if (deviceResult.Code == StateCode.SUCCESS)
                             {
                                 FunctionList.List.ClearDatas();
-                                MainPage.Log($"============璁惧============寮�濮�" + FunctionList.List.Functions.Count);
+                                //MainPage.Log($"============璁惧============寮�濮�" + FunctionList.List.Functions.Count);
                                 //MainPage.Log($"璇诲彇璁惧淇℃伅鎴愬姛");
                                 //MainPage.Log($"sid鍒楄〃鑾峰彇====" + deviceResult.Data.ToString());
                                 var deviceList = JsonConvert.DeserializeObject<DevcieApiPack>(deviceResult.Data.ToString());
@@ -226,13 +226,13 @@
                                     }
                                 }
                                 //澶勭悊鍓╀笅鐨勬柊澧炲姛鑳�
-                                int iiii = 0;
+                                //int iiii = 0;
                                 foreach (var newFunction in deviceList.list)
                                 {
                                     newFunction.AssembleStatus();
                                     newFunction.SaveFunctionFile(); 
                                     FunctionList.List.IniFunctionList(newFunction.savePath,true);
-                                    MainPage.Log($"============璁惧============{iiii++}");
+                                    //MainPage.Log($"============璁惧============{iiii++}");
                                 }
 
 
@@ -351,9 +351,6 @@
                         }
 
 
-#if DEBUG
-                        DB_ResidenceData.Instance.HomeGateway.isSupportGroupControl = true;
-#endif
                         if (DB_ResidenceData.Instance.HomeGateway.isSupportGroupControl)
                         {
                             var pack = Ins.HttpRequest.GetGroupControlList();
@@ -416,11 +413,7 @@
                                 }
                             }
                         }
-
-
-                    //})
-                    //{ IsBackground = true }.Start();
-
+                        //======================鍦烘櫙====================
                         try
                         {
                             complateScene = false;
@@ -481,21 +474,17 @@
                         {
                             complateScene = true;
                         }
+
+                        //======================瀹夐槻====================
+                        GetSecurityList();
                     })
                     { IsBackground = true }.Start();
 
                     //===================璇诲彇閫昏緫鍒楄〃==========================
                     Logic.LogicList.Clear();//涓婚〉涓嬫媺寮哄埗鍒锋柊鑷姩鍖栧垪琛�
-                    //UI.UI2.Intelligence.Automation.MainView.GetLogicList();
 
-
-
-                    //======================瀹夐槻====================
-                    GetSecurityList();
                     //======================娉ㄥ唽鎺ㄩ��====================
                     httpRequest.RegisteredPush();
-
-
                 }
                 catch (Exception ex)
                 {
@@ -593,40 +582,43 @@
         /// </summary>
         public void GetSecurityList()
         {
-            var pack = Ins.HttpRequest.GetSecurityList();
-            if (pack.Code == StateCode.SUCCESS)
+            lock (FunctionList.List.securities)
             {
-                var packList = JsonConvert.DeserializeObject<List<SecurityAlarm>>(pack.Data.ToString());
-                var sidList = new List<string>();
-                foreach (var function in packList)
+                var pack = Ins.HttpRequest.GetSecurityList();
+                if (pack.Code == StateCode.SUCCESS)
                 {
-                    sidList.Add(function.sid);
-                }
-                var infoListPack = Ins.httpRequest.GetSecurityInfo(sidList, new List<string>());
-                var infoList = JsonConvert.DeserializeObject<List<SecurityAlarm>>(infoListPack.Data.ToString());
-                if (infoList != null)
-                {
-                    var filePathList = FileUtlis.Files.ReadFiles().FindAll((obj) => obj.StartsWith("SecurityData_"));
-                    if (filePathList != null)
+                    var packList = JsonConvert.DeserializeObject<List<SecurityAlarm>>(pack.Data.ToString());
+                    Console.WriteLine("瀹夐槻鎬绘暟锛�" + packList.Count);
+                    var sidList = new List<string>();
+                    foreach (var function in packList)
                     {
-                        foreach (var file in filePathList)
+                        sidList.Add(function.sid);
+                    }
+                    var infoListPack = Ins.httpRequest.GetSecurityInfo(sidList, new List<string>());
+                    var infoList = JsonConvert.DeserializeObject<List<SecurityAlarm>>(infoListPack.Data.ToString());
+                    if (infoList != null)
+                    {
+                        var filePathList = FileUtlis.Files.ReadFiles().FindAll((obj) => obj.StartsWith("SecurityData_"));
+                        if (filePathList != null)
                         {
-                            FileUtlis.Files.DeleteFile(file);
+                            foreach (var file in filePathList)
+                            {
+                                FileUtlis.Files.DeleteFile(file);
+                            }
+                        }
+                        FunctionList.List.securities.Clear();
+                        foreach (var function in infoList)
+                        {
+                            function.SaveFile();
+                            FunctionList.List.IniFunctionList(function.savePath, true);
                         }
                     }
-                    FunctionList.List.securities.Clear();
-                    foreach (var function in infoList)
-                    {
-                        function.SaveFile();
-                        FunctionList.List.IniFunctionList(function.savePath, true);
-                    }
                 }
-            } 
-            else
-            {
-                MainPage.Log($"璇诲彇瀹夐槻鍒楄〃澶辫触:Code:{pack.Code}; Msg:{pack.message}");
+                else
+                {
+                    MainPage.Log($"璇诲彇瀹夐槻鍒楄〃澶辫触:Code:{pack.Code}; Msg:{pack.message}");
+                }
             }
-
         }
 
         /// <summary>
diff --git a/HDL_ON/Entity/FunctionList.cs b/HDL_ON/Entity/FunctionList.cs
index aecf05a..bb14283 100644
--- a/HDL_ON/Entity/FunctionList.cs
+++ b/HDL_ON/Entity/FunctionList.cs
@@ -14,20 +14,20 @@
     {
         static FunctionList _FunctionList;
 
-        public static void ClearData()
-        {
-            try
-            {
-                _FunctionList._IpCamImou = null;
-                _FunctionList.ClearDatas();
-                _FunctionList = null;
-            }
-            catch (Exception ex)
-            {
-                MainPage.Log($"娓呯悊FunctionList寮傚父:{ex.Message}");
-                _FunctionList = null;
-            }
-        }
+        //public static void ClearData()
+        //{
+        //    try
+        //    {
+        //        _FunctionList._IpCamImou = null;
+        //        _FunctionList.ClearDatas();
+        //        _FunctionList = null;
+        //    }
+        //    catch (Exception ex)
+        //    {
+        //        MainPage.Log($"娓呯悊FunctionList寮傚父:{ex.Message}");
+        //        _FunctionList = null;
+        //    }
+        //}
 
         public static FunctionList List
         {
@@ -384,7 +384,7 @@
                     var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<SecurityAlarm>(dataString);
                     if (temp == null)
                     {
-                        MainPage.Log("null");
+                        MainPage.Log("SecurityData_null");
                         FileUtlis.Files.DeleteFile(filePath);
                         return;
                     }

--
Gitblit v1.8.0