Crabtree/ON/Application.cs
@@ -1,5 +1,6 @@
using System;
using Android;
using Android.App;
using Android.Content;
using Android.Net;
using Android.OS;
@@ -40,7 +41,7 @@
    /// 设定为默认启动的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)
        {
@@ -136,8 +137,16 @@
                    Utlis.WriteLine ("NetworkStateChanged " + obj);
                    UserConfig.Instance.internetStatus = obj;
                    UserConfig.Instance.SaveUserConfig ();
                    ////网络变化通知
                    //EquipmentPublicClass.CheckLinkRemote (obj, false);
                    //2020-06-10 同步HDLON 修改优化
                    if (!IsEnterBackground) {
                    //网络变化通知
                    EquipmentPublicClass.CheckLinkRemote (obj, false);
                    } else {
                        Console.WriteLine ("HHH 网络变化但处于后台");
                    }
                };
            };
            BaseActivity.RefreshUIAction += (activity) => {
@@ -160,7 +169,9 @@
            };
            HDLUtils.SetAuthoritiesName ("com.hdl.crabtreenew.fileProvider");
        }
        public static bool IsShowTip = true;
        void init ()
        {
            Shared.Application.Skin = UserConfig.Instance.CurrentSkinName;
@@ -193,48 +204,147 @@
                }
            };
        }
        void checkSomeInfo ()
        {
            //RemoteInfo.Current.ReadMsgList (UserConfig.Instance.tokenID, IsShowTip);
            //JPushInterface.ClearAllNotifications (this);
            IsShowTip = true;
            var status = isNetworkAvailable (this);
            Utlis.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;
                }
            }
            Utlis.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:foreground");
                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 ();
                }
            }
            return false;
        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;
            Shared.BusSocket.Stop ();
            closeTime = DateTime.Now;
        }
        /// <summary>
        /// BusSocketStart
        /// </summary>
        void BusSocketStart ()
        {
            IsEnterBackground = false;
            if (closeTime == DateTime.MinValue) {
                closeTime = DateTime.Now;
            } else if (closeTime.AddSeconds (10) < DateTime.Now) {
                if (CommonPage.IsRemote) {
                    SmartHome.MqttCommon.DisConnectRemoteMqttClient("closeTime");
                }
            }
            Shared.BusSocket.Start (6000);
        }
    }