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 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>
@@ -59,7 +73,6 @@
            //BaseActivity.IsEnnableGPS = false;
            //BaseActivity.VerifyDateTime = DateTime.MaxValue;
            //BaseActivity.KeepScreenON = false;
            BaseActivity.BackKeyAction = () => {
@@ -108,23 +121,31 @@
            };
            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) => {
                    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) => {
@@ -147,82 +168,183 @@
            };
            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 = (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);
            //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);
        }
    }
}