JLChen
2021-01-11 5a5a2b696866f947b6025d26c3302e8ffef46435
Crabtree/ON/Application.cs
@@ -1,13 +1,10 @@
using 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 Shared;
using Shared.SimpleControl;
using SmartHome;
@@ -40,7 +37,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)
        {
@@ -57,6 +54,9 @@
                reStartApp (this);
                return;
            }
            RegisterActivityLifecycleCallbacks (this);
            //Shared.Application.IsGpsEnable = false;
            base.OnCreate ();
@@ -121,7 +121,7 @@
            };
            Shared.Application.FontSize = 16;
            BaseActivity.IsHideVirualButtons = false;
            BaseActivity.IsHideVirualButtons = true;
            ZXing.Mobile.MobileBarcodeScanner.Initialize (this);
            init ();
            BaseActivity.OnCreateActoin += (activity, application) => {
@@ -136,8 +136,16 @@
                    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) => {
@@ -160,7 +168,9 @@
            };
            HDLUtils.SetAuthoritiesName ("com.hdl.crabtreenew.fileProvider");
        }
        public static bool IsShowTip = true;
        void init ()
        {
            Shared.Application.Skin = UserConfig.Instance.CurrentSkinName;
@@ -169,73 +179,172 @@
            ////设置极光调试模式,为false时只打印警告信息
            //JPushInterface.SetDebugMode (false);
            //JPushInterface.Init (this);//保存手机名称到本地文件
            //获取经纬度 
            Shared.Application.LocationAction = (arg1, arg2) => {
            Shared.Application.LocationAction = (lon, lat) => {
                try {
                    Shared.Application.LocationAction = null;
                    HttpServerRequest.Current.GetCityInfo (lon.ToString (), lat.ToString ());
                    //关闭定位服务
                    Shared.Application.StopGPSLocationService ();
                    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 ();
                        });
                    });
                } catch {
                } 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);
            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 ();
            }
        }
        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正在连接重置状态
            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);
        }
    }
}