HDL-ON_Android/Application.cs
@@ -49,7 +49,9 @@
            string[] permissions = new string[] { Manifest.Permission.WriteExternalStorage, Manifest.Permission.RecordAudio,
            Manifest.Permission.Camera, Manifest.Permission.ProcessOutgoingCalls, Manifest.Permission.GetAccounts};
            //禁止屏幕长亮
            BaseActivity.KeepScreenON = false;
            //隐藏迪拜虚拟按键
            BaseActivity.IsHideVirualButtons = true;
            init();
            BaseActivity.OnCreateActoin += (activity, application) =>
@@ -61,31 +63,33 @@
                {
                    Language.CurrentLanguage = "Chinese";
                }
#if DEBUG
                //获取极光推送ID
                GetJPushRegistrationID(activity);
#else
                //注册极光推送
                InitJPush(activity);
#endif
                BaseActivity.NetworkStateChanged += (int obj) =>
                BaseActivity.NetworkStateChanged += (int internetStatus) =>
                {
                    if (!IsEnterBackground)
                    {
                        //BusSocket.Stop();
                        new System.Threading.Thread(() =>
                        {
                            System.Threading.Thread.Sleep(1000);
                            //BusSocket.Start();
                        })
                        { IsBackground = true }.Start();
                    }
                    else
                    {
                        Console.WriteLine("HHH 网络变化但处于后台");
                    }
                    //if (!IsEnterBackground)
                    //{
                    //    ////BusSocket.Stop();
                    //    //new System.Threading.Thread(() =>
                    //    //{
                    //    //    System.Threading.Thread.Sleep(1000);
                    //    //    //BusSocket.Start();
                    //    //})
                    //    //{ IsBackground = true }.Start();
                    //}
                    //else
                    //{
                    //    Console.WriteLine("HHH 网络变化但处于后台");
                    //}
                    //网络变化处理
                    HDLCommon.Current.UpdateInternetStatus((int)internetStatus, MainPage.IsEnterBackground);
                };
                //开启定位服务
                Shared.Application.StartGPSLocationService();
            };
            BaseActivity.RefreshUIAction += (activity) =>
            {
@@ -95,39 +99,48 @@
            BaseActivity.OnResumeAction += (activity) =>
            {
                checkSomeInfo();
                new HDL_ON.UI.AppUnlockPage().LoadPage();
            };
            BaseActivity.OnDestroyAction += (activity) =>
            {
                Console.WriteLine("OnDestroyAction");
                //BusSocket.Stop();
                OnAppConfig.Instance.unlockTime = DateTime.Now;
                //UserInfo.Current.unlockTime = DateTime.Now;
            };
            HDLUtils.SetAuthoritiesName("com.hdl.onpro.fileProvider");
            //Shared.Application.IsGpsEnable = true;
            Shared.Application.LocationAction = (arg1, arg2) =>
            //获取经纬度
            Shared.Application.LocationAction = (lon, lat) =>
            {
                Shared.Application.LocationAction = null;
                new HDL_ON.DAL.Server.HttpServerRequest().GetCityInfo(arg1.ToString(), arg2.ToString());
                MainPage.Log($"经纬度:::{arg1}:{arg2}");
                try
                {
                    Shared.Application.LocationAction = null;
                    new HDL_ON.DAL.Server.HttpServerRequest().GetCityInfo(lon.ToString(), lat.ToString());
                    //关闭定位服务
                    Shared.Application.StopGPSLocationService();
                }
                  catch(Exception ex)
                {
                    Utlis.WriteLine("GetCityInfo catch"+ ex.Message);
                }
                MainPage.Log($"经纬度:::{lon}:{lat}");
            };
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="activity"></param>
        void InitJPush(BaseActivity activity)
        void GetJPushRegistrationID(BaseActivity activity)
        {
            try
            {
                //#if Release
                //保存获取的极光服务器上的注册ID到本地文件
                var tokenID = JPushInterface.GetRegistrationID(activity);
                Console.WriteLine("RegistrationID:  " + tokenID);
@@ -135,7 +148,7 @@
                {
                    OnAppConfig.Instance.PushDeviceToken = tokenID;
                    OnAppConfig.Instance.PhoneName = Android.OS.Build.Manufacturer;
                    OnAppConfig.Instance.SaveUserConfig();
                    OnAppConfig.Instance.SaveConfig();
                }
                int loadTokenCount = 0;
                System.Threading.Tasks.Task.Run(() =>
@@ -156,11 +169,10 @@
                    {
                        OnAppConfig.Instance.PushDeviceToken = tokenID;
                        OnAppConfig.Instance.PhoneName = Android.OS.Build.Manufacturer;
                        OnAppConfig.Instance.SaveUserConfig();
                        OnAppConfig.Instance.SaveConfig();
                    }
                });
                //#endif
            }
            catch
            {
@@ -174,12 +186,10 @@
            //手机名称 Android.OS.Build.Manufacturer;
            //OnAppConfig.Instance.PhoneName = Android.OS.Build.Manufacturer;
#if DEBUG
#else
            //设置极光调试模式,为false时只打印警告信息
            JPushInterface.SetDebugMode(false);
            JPushInterface.Init(this);//保存手机名称到本地文件
            CN.Jpush.Android.Api.JPushInterface.SetDebugMode(true);
#endif
            CN.Jpush.Android.Api.JPushInterface.Init(this);
        }
        void checkSomeInfo()
        {
@@ -271,6 +281,8 @@
            {
                Console.WriteLine("HHH OnActivityStarted:foreground");
                BusSocketStart();
                //后台回到前台
                new HDL_ON.UI.AppUnlockPage().LoadPage();
            }
        }
@@ -282,6 +294,9 @@
            {
                Console.WriteLine("HHH OnActivityStopped: background");
                BusSocketStop();
                //进入后台
                UserInfo.Current.unlockTime = DateTime.Now;
            }
        }
@@ -294,31 +309,53 @@
        int mCount;
        ///// <summary>
        ///// 是否进入后台
        ///// </summary>
        //public bool IsEnterBackground = false;
        /// <summary>
        /// 是否进入后台
        /// 进入后台的时间
        /// </summary>
        public bool IsEnterBackground = false;
        DateTime CloseTime = DateTime.Now;
        /// <summary>
        /// BusSocketStop
        /// </summary>
        void BusSocketStop()
        {
            IsEnterBackground = true;
            //BusSocket.Stop();
            OnAppConfig.Instance.unlockTime = DateTime.Now;
            //IsEnterBackground = true;
            CloseTime = DateTime.Now;
            MainPage.IsEnterBackground = true;
            //进入后台mqtt正在连接重置状态
            HDL_ON.DAL.Mqtt.MqttClient.RemoteMqttIsConnecting = false;
            HDL_ON.DriverLayer.UdpSocket._BusSocket.Stop();
        }
        /// <summary>
        /// BusSocketStart
        /// </summary>
        void BusSocketStart()
        {
            IsEnterBackground = false;
            //IsEnterBackground = false;
            //BusSocket.Start();
            if (CloseTime.AddSeconds(10) < DateTime.Now)
            {
                //后台超过10s就断开MQTT重连
                if (HDL_ON.DriverLayer.Control.Ins.IsRemote)
                {
                    HDL_ON.DAL.Mqtt.MqttClient.DisConnectRemote("closeTime", false);
                }
            }
            MainPage.IsEnterBackground = false;
            HDL_ON.DriverLayer.UdpSocket._BusSocket.Start();
            HDL_ON.DriverLayer.Control.Ins.SearchLoaclGateway();
        }
    }
}