From 5a5a2b696866f947b6025d26c3302e8ffef46435 Mon Sep 17 00:00:00 2001
From: JLChen <551775569@qq.com>
Date: 星期一, 11 一月 2021 16:11:20 +0800
Subject: [PATCH] 2021-01-11 1.更新MQTT连接和本地搜索网关方法。2.子账号相关接口完善

---
 Crabtree/ON/Application.cs |  275 ++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 202 insertions(+), 73 deletions(-)

diff --git a/Crabtree/ON/Application.cs b/Crabtree/ON/Application.cs
index 34ad22e..0e4c578 100644
--- a/Crabtree/ON/Application.cs
+++ b/Crabtree/ON/Application.cs
@@ -1,13 +1,10 @@
 锘縰sing System;
-using Android;
+using Android.App;
 using Android.Content;
-using Android.Net;
 using Android.OS;
-using CN.Jpush.Android.Api;
-using CN.Jpush.Android.Service;
-using Java.Lang;
-using Java.Util;
-using Java.Util.Zip;
+//using CN.Jpush.Android.Api;
+//using CN.Jpush.Android.Service;
+
 using Shared;
 using Shared.SimpleControl;
 using SmartHome;
@@ -40,14 +37,31 @@
     /// 璁惧畾涓洪粯璁ゅ惎鍔ㄧ殑Application
     /// </summary>
     [Android.App.Application]
-    public class Application : Android.App.Application
+    public class Application : Android.App.Application, Android.App.Application.IActivityLifecycleCallbacks
     {
+        static void reStartApp (Android.App.Application application)
+        {
+            var intent = new Intent (application, typeof (BaseActivity));
+            intent.AddFlags (ActivityFlags.NewTask);
+            application.StartActivity (intent);
+            Android.OS.Process.KillProcess (Android.OS.Process.MyPid ());
+        }
+
         public Application (IntPtr handle, Android.Runtime.JniHandleOwnership ownerShip) : base (handle, ownerShip) { }
         public override void OnCreate ()
         {
-            initAll ();
+            if (Shared.Application.Activity != null) {
+                reStartApp (this);
+                return;
+            }
+
+            RegisterActivityLifecycleCallbacks (this);
+
+            //Shared.Application.IsGpsEnable = false;
 
             base.OnCreate ();
+
+            initAll ();
         }
 
         /// <summary>
@@ -61,10 +75,9 @@
             //BaseActivity.KeepScreenON = false;
 
 
-
             BaseActivity.BackKeyAction = () => {
                 if (Shared.SimpleControl.MainPage.Loading != null) {
-                    Console.WriteLine (MainPage.Loading.CurStatus);
+                    Utlis.WriteLine (MainPage.Loading.CurStatus);
                     if (Shared.SimpleControl.MainPage.Loading.CurStatus) {
                         Shared.SimpleControl.MainPage.Loading.Hide ();
                         return;
@@ -73,7 +86,7 @@
                 //if(BaseActivity.VerifyDateTime == DateTime.MaxValue) { } else 
                 try {
                     var lastView = Shared.Application.MainPage.GetChildren (Shared.Application.MainPage.ChildrenCount - 1);
-                    Console.WriteLine ("lastView " + lastView);
+                    Utlis.WriteLine ("lastView " + lastView);
                     if (MainPage.Loading.CurStatus) {
                         return;
                     }
@@ -82,49 +95,57 @@
                             BaseActivity.VerifyDateTime = DateTime.MaxValue;
                             return;
                         } else {
-                            Console.WriteLine ("Remove Dialog!!!!");
+                            Utlis.WriteLine ("Remove Dialog!!!!");
                             var lastView2 = Shared.Application.MainPage.GetChildren (Shared.Application.MainPage.ChildrenCount - 2);
                             lastView.RemoveFromParent ();
                             lastView2.RemoveFromParent ();
-                            Console.WriteLine ("Remove Dialog End!!!!");
+                            Utlis.WriteLine ("Remove Dialog End!!!!");
                             BaseActivity.VerifyDateTime = DateTime.MinValue;
                             return;
                         }
                     }
                 } catch (System.Exception ezx) {
-                    Console.WriteLine (ezx.Message);
+                    Utlis.WriteLine (ezx.Message);
                 }
                 if (SharedMethod.SharedMethod.CurPageLayout != null) {
                     if (SharedMethod.SharedMethod.CurPageLayout.ChildrenCount > 1) {
-                        Console.WriteLine ("Remove PageLayout Children!!!!");
+                        Utlis.WriteLine ("Remove PageLayout Children!!!!");
                         SharedMethod.SharedMethod.CurPageLayout.GetChildren (SharedMethod.SharedMethod.CurPageLayout.ChildrenCount - 1).RemoveFromParent ();
-                        Console.WriteLine ("Remove PageLayout Children End!!!!");
+                        Utlis.WriteLine ("Remove PageLayout Children End!!!!");
                         BaseActivity.VerifyDateTime = DateTime.MinValue;
                     } else {
-                        Console.WriteLine ("BaseActivity.VerifyDateTime = DateTime.MaxValue");
+                        Utlis.WriteLine ("BaseActivity.VerifyDateTime = DateTime.MaxValue");
                         BaseActivity.VerifyDateTime = DateTime.MaxValue;
                     }
                 }
             };
 
             Shared.Application.FontSize = 16;
-            BaseActivity.IsHideVirualButtons = false;
+            BaseActivity.IsHideVirualButtons = true;
             ZXing.Mobile.MobileBarcodeScanner.Initialize (this);
             init ();
             BaseActivity.OnCreateActoin += (activity, application) => {
                 Microsoft.AppCenter.AppCenter.Start ("d0f0f0c5-88af-494b-93af-9a667801b7a3", typeof (Microsoft.AppCenter.Analytics.Analytics), typeof (Microsoft.AppCenter.Crashes.Crashes));
-                //淇濆瓨鑾峰彇鐨勬瀬鍏夋湇鍔″櫒涓婄殑娉ㄥ唽ID鍒版湰鍦版枃浠�
-                var tokenID = JPushInterface.GetRegistrationID (activity);
-                if (!string.IsNullOrEmpty (tokenID) && UserConfig.Instance.tokenID != tokenID) {
-                    UserConfig.Instance.tokenID = tokenID;
-                    UserConfig.Instance.SaveUserConfig ();
-                }
+                ////淇濆瓨鑾峰彇鐨勬瀬鍏夋湇鍔″櫒涓婄殑娉ㄥ唽ID鍒版湰鍦版枃浠�
+                //var tokenID = JPushInterface.GetRegistrationID (activity);
+                //if (!string.IsNullOrEmpty (tokenID) && UserConfig.Instance.tokenID != tokenID) {
+                //    UserConfig.Instance.tokenID = tokenID;
+                //    UserConfig.Instance.SaveUserConfig ();
+                //}
                 BaseActivity.NetworkStateChanged += (int obj) => {
-                    Console.WriteLine ("NetworkStateChanged " + obj);
+                    Utlis.WriteLine ("NetworkStateChanged " + obj);
                     UserConfig.Instance.internetStatus = obj;
                     UserConfig.Instance.SaveUserConfig ();
-                    //缃戠粶鍙樺寲閫氱煡
-                    EquipmentPublicClass.CheckLinkRemote (obj, false);
+                    ////缃戠粶鍙樺寲閫氱煡
+                    //EquipmentPublicClass.CheckLinkRemote (obj, false);
+
+                    //2020-06-10 鍚屾HDLON 淇敼浼樺寲
+                    if (!IsEnterBackground) {
+                        //缃戠粶鍙樺寲閫氱煡
+                        EquipmentPublicClass.CheckLinkRemote (obj, false);
+                    } else {
+                        Console.WriteLine ("HHH 缃戠粶鍙樺寲浣嗗浜庡悗鍙�");
+                    }
                 };
             };
             BaseActivity.RefreshUIAction += (activity) => {
@@ -145,77 +166,185 @@
             BaseActivity.OnDestroyAction += (activity) => {
                 BusSocket.Stop ();
             };
+            HDLUtils.SetAuthoritiesName ("com.hdl.crabtreenew.fileProvider");
         }
+
         public static bool IsShowTip = true;
+
         void init ()
         {
             Shared.Application.Skin = UserConfig.Instance.CurrentSkinName;
             SkinStyle.Current.ChangeColor ();
             UserConfig.Instance.phoneName = Android.OS.Build.Manufacturer;
-            //璁剧疆鏋佸厜璋冭瘯妯″紡锛屼负false鏃跺彧鎵撳嵃璀﹀憡淇℃伅
-            JPushInterface.SetDebugMode (false);
-            JPushInterface.Init (this);//淇濆瓨鎵嬫満鍚嶇О鍒版湰鍦版枃浠�
+            ////璁剧疆鏋佸厜璋冭瘯妯″紡锛屼负false鏃跺彧鎵撳嵃璀﹀憡淇℃伅
+            //JPushInterface.SetDebugMode (false);
+            //JPushInterface.Init (this);//淇濆瓨鎵嬫満鍚嶇О鍒版湰鍦版枃浠�
+           
             //鑾峰彇缁忕含搴� 
-            Shared.Application.LocationAction = (arg1, arg2) => {
-                Shared.Application.LocationAction = null;
-                System.Threading.Tasks.Task.Run (() => {
-                    while (true) {
-                        try {
-                            Shared.SimpleControl.CommonPage.AirQuality = new service.hdlcontrol.com_WebServiceAirQuality.WebServiceAirQuality ().GetAirQuality (arg2.ToString (), arg1.ToString ());
-                            if (Shared.SimpleControl.CommonPage.AirQuality != null)
-                                break;
-                        } catch { }
-                    }
-                    Shared.Application.RunOnMainThread (() => {
-                        if (CommonPage.RefreshAir != null)
-                            CommonPage.RefreshAir ();
-                    });
-                });
+            Shared.Application.LocationAction = (lon, lat) => {
+                try {
+                    Shared.Application.LocationAction = null;
+                    HttpServerRequest.Current.GetCityInfo (lon.ToString (), lat.ToString ());
+                    //鍏抽棴瀹氫綅鏈嶅姟
+                    Shared.Application.StopGPSLocationService ();
+                } catch (System.Exception ex) {
+                    Utlis.WriteLine ("GetCityInfo catch" + ex.Message);
+                }
+                Utlis.WriteLine ($"缁忕含搴�:::{lon}:{lat}");
             };
+
         }
+
         void checkSomeInfo ()
         {
-            RemoteInfo.Current.ReadMsgList (UserConfig.Instance.tokenID, IsShowTip);
-            JPushInterface.ClearAllNotifications (this);
+            //RemoteInfo.Current.ReadMsgList (UserConfig.Instance.tokenID, IsShowTip);
+            //JPushInterface.ClearAllNotifications (this);
 
             IsShowTip = true;
-            var status = isNetworkAvailable (this);
-            Console.WriteLine ("status!!!" + status);
+            //var status = isNetworkAvailable (this);
+            //Utlis.WriteLine ("status!!!" + status);
+            //int internetStatus = 0;
+            //if (status) {
+            //    var isWifi = isWifiConnected (this);
+            //    if (isWifi) {
+            //        internetStatus = 2;
+            //    } else {
+            //        internetStatus = 1;
+            //    }
+            //}
+            //Utlis.WriteLine ("");
+
+            //2020-06-10 淇敼缃戠粶鍒ゆ柇鍑洪敊闂
             int internetStatus = 0;
-            if (status) {
-                var isWifi = isWifiConnected (this);
-                if (isWifi) {
-                    internetStatus = 2;
-                } else {
-                    internetStatus = 1;
-                }
-            }
-            Console.WriteLine ("");
+            internetStatus = NetworkUtils.CheckConnectedMode ();
+            Console.WriteLine ("internetStatus锛�" + internetStatus);
+
             Shared.SimpleControl.EquipmentPublicClass.CheckLinkRemote (internetStatus, false);
         }
 
-        bool isNetworkAvailable (Context context)
+        //bool isNetworkAvailable (Context context)
+        //{
+        //    var cm = (ConnectivityManager)context.GetSystemService (ConnectivityService);
+        //    if (cm == null || cm.ActiveNetworkInfo == null) {
+        //        return false;
+        //    } else {
+        //        return cm.ActiveNetworkInfo.IsAvailable;
+        //    }
+        //}
+
+        //bool isWifiConnected (Context context)
+        //{
+        //    if (context != null) {
+        //        var mConnectivityManager = (ConnectivityManager)context.GetSystemService
+        //        (ConnectivityService);
+        //        var mWiFiNetworkInfo = mConnectivityManager.GetNetworkInfo (ConnectivityType.Wifi);
+        //        if (mWiFiNetworkInfo != null) {
+        //            return mWiFiNetworkInfo.IsAvailable;
+        //        }
+        //    }
+        //    return false;
+        //}
+
+
+        public void OnActivityCreated (Activity activity, Bundle savedInstanceState)
         {
-            var cm = (ConnectivityManager)context.GetSystemService (ConnectivityService);
-            if (cm == null || cm.ActiveNetworkInfo == null) {
-                return false;
-            } else {
-                return cm.ActiveNetworkInfo.IsAvailable;
+
+        }
+
+        public void OnActivityDestroyed (Activity activity)
+        {
+            //throw new NotImplementedException ();
+        }
+
+        public void OnActivityPaused (Activity activity)
+        {
+            //throw new NotImplementedException ();
+        }
+
+        public void OnActivityResumed (Activity activity)
+        {
+            //throw new NotImplementedException ();
+        }
+
+        public void OnActivitySaveInstanceState (Activity activity, Bundle outState)
+        {
+            //throw new NotImplementedException ();
+        }
+
+        public void OnActivityStarted (Activity activity)
+        {
+            //throw new NotImplementedException ();
+
+            mCount++;
+            if (mCount == 1) {
+                Console.WriteLine ("HHH OnActivityStarted锛歠oreground");
+                BusSocketStart ();
             }
         }
 
-        bool isWifiConnected (Context context)
+        public void OnActivityStopped (Activity activity)
         {
-            if (context != null) {
-                var mConnectivityManager = (ConnectivityManager)context.GetSystemService
-                (ConnectivityService);
-                var mWiFiNetworkInfo = mConnectivityManager.GetNetworkInfo (ConnectivityType.Wifi);
-                if (mWiFiNetworkInfo != null) {
-                    return mWiFiNetworkInfo.IsAvailable;
+
+            mCount--;
+            if (mCount == 0) {
+                Console.WriteLine ("HHH OnActivityStopped锛� background");
+                BusSocketStop ();
+            }
+        }
+
+
+        public override void OnTerminate ()
+        {
+            base.OnTerminate ();
+            UnregisterActivityLifecycleCallbacks (this);
+        }
+
+        int mCount;
+
+        /// <summary>
+        /// 鏄惁杩涘叆鍚庡彴
+        /// </summary>
+        public bool IsEnterBackground = false;
+
+        DateTime closeTime = DateTime.MinValue;
+
+        /// <summary>
+        /// BusSocketStop
+        /// </summary>
+        void BusSocketStop ()
+        {
+            IsEnterBackground = true;
+            //杩涘叆鍚庡彴mqtt姝e湪杩炴帴閲嶇疆鐘舵��
+            MqttCommon.remoteMqttIsConnecting = false;
+            Shared.BusSocket.Stop ();
+            closeTime = DateTime.Now;
+        }
+
+
+        /// <summary>
+        /// BusSocketStart
+        /// </summary>
+        void BusSocketStart ()
+        {
+            IsEnterBackground = false;
+
+            if (closeTime == DateTime.MinValue) {
+                closeTime = DateTime.Now;
+            } else if (closeTime.AddSeconds (20) < DateTime.Now) {
+                if (CommonPage.IsRemote) {
+                    SmartHome.MqttCommon.DisConnectRemoteMqttClient ("closeTime");
                 }
             }
-            return false;
+
+            Shared.BusSocket.Start (6000);
         }
 
+        void Hide () {
+//            Window _window;
+//            _window = this.GetWindow ();
+//            WindowManager.LayoutParams params = _window.getAttributes ();
+//params.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
+//            _window.setAttributes (params);
+        }
     }
 }

--
Gitblit v1.8.0