wxr
2022-01-14 3be0abe90546f2a3a45828f5e6c8adc4517ea9e0
HDL-ON_Android/Application.cs
@@ -35,258 +35,14 @@
    public Application(IntPtr handle, Android.Runtime.JniHandleOwnership ownerShip) : base(handle, ownerShip) { }
    public override void OnCreate()
    {
      //注册未处理异常事件
      AppCenter.Start("64ac5859-2cd7-4ef8-a5da-5455e29679ec", typeof(Analytics), typeof(Crashes));
      if (Shared.Application.Activity != null)
      {
        reStartApp(this);
                //reStartApp(this);
        return;
      }
      base.OnCreate();
      RegisterActivityLifecycleCallbacks(this);
      initAll();
    }
    /// <summary>
    /// 所有初始化全部在这个方法实现
    /// </summary>
    void initAll()
    {
      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;
      //实现安卓返回按键
      BaseActivity.BackKeyAction = () =>
      {
        try
        {
          var result = MainPage.LoadEvent_BackAction();
          switch (result)
          {
            case 0:
              break;
            case 1:
            case 2:
              BaseActivity.VerifyDateTime = DateTime.MaxValue;
              break;
            default:
              BaseActivity.VerifyDateTime = DateTime.MaxValue;
              break;
          }
        }
        catch (Exception ex)
        {
          MainPage.Log(ex.Message);
          BaseActivity.VerifyDateTime = DateTime.MaxValue;
        }
      };
      init();
      BaseActivity.OnCreateActoin += (activity, application) =>
      {
        Language.CurrentLanguage = "Chinese";
        Locale locale1 = Locale.Default;
        var localeList = Resources.Configuration.Locale;
        if (localeList.Language == "zh")
        {
          Language.CurrentLanguage = "Chinese";
        }
        else
        {
          Language.CurrentLanguage = "English";
        }
        //获取极光推送ID
        GetJPushRegistrationID(activity);
        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 网络变化但处于后台");
                //}
                //网络变化处理
                HDLCommon.Current.UpdateInternetStatus((int)internetStatus, MainPage.IsEnterBackground);
              };
      };
      BaseActivity.RefreshUIAction += (activity) =>
      {
        MainPage.Show();
        checkSomeInfo();
      };
      BaseActivity.OnResumeAction += (activity) =>
      {
        checkSomeInfo();
      };
      BaseActivity.OnDestroyAction += (activity) =>
      {
        Console.WriteLine("OnDestroyAction");
        //BusSocket.Stop();
        //UserInfo.Current.unlockTime = DateTime.Now;
      };
      HDLUtils.SetAuthoritiesName("com.hdl.onpro.fileProvider");
      //Shared.Application.IsGpsEnable = true;
      bool isfirst = true;
      //获取经纬度
      Shared.Application.LocationAction = (lon, lat) =>
      {
        try
        {
          if (isfirst)
          {
            //只触发一次
            //Shared.Application.LocationAction = null;
            new HDL_ON.DAL.Server.HttpServerRequest().GetCityWeatherInfo(lon.ToString(), lat.ToString());
          }
          isfirst = false;
          ///监听经纬度
          HDL_ON.UI.UI2.Intelligence.Automation.LogicMethod.CurrLogicMethod.AppLatAndLonEvent(lon, lat);
          //关闭定位服务
          //Shared.Application.StopGPSLocationService();
        }
        catch (Exception ex)
        {
          Utlis.WriteLine("GetCityInfo catch" + ex.Message);
        }
        MainPage.Log($"经纬度:::{lon}:{lat}");
      };
    }
    /// <summary>
    ///
    /// </summary>
    /// <param name="activity"></param>
    void GetJPushRegistrationID(BaseActivity activity)
    {
      try
      {
        //保存获取的极光服务器上的注册ID到本地文件
        var tokenID = JPushInterface.GetRegistrationID(activity);
        Console.WriteLine("RegistrationID:  " + tokenID);
        if (!string.IsNullOrEmpty(tokenID) && OnAppConfig.Instance.PushDeviceToken != tokenID)
        {
          OnAppConfig.Instance.PushDeviceToken = tokenID;
          OnAppConfig.Instance.PhoneName = Android.OS.Build.Manufacturer;
          OnAppConfig.Instance.SaveConfig();
        }
        int loadTokenCount = 0;
        System.Threading.Tasks.Task.Run(() =>
        {
          while (string.IsNullOrEmpty(tokenID))
          {
            System.Threading.Thread.Sleep(1000);
            tokenID = JPushInterface.GetRegistrationID(activity);
            Console.WriteLine("Sleep.tokenID + " + JPushInterface.GetRegistrationID(activity));
            loadTokenCount++;
            if (loadTokenCount > 30)
            {
              break;
            }
          }
          Console.WriteLine("RegistrationID:  " + tokenID);
          if (!string.IsNullOrEmpty(tokenID) && OnAppConfig.Instance.PushDeviceToken != tokenID)
          {
            OnAppConfig.Instance.PushDeviceToken = tokenID;
            OnAppConfig.Instance.PhoneName = Android.OS.Build.Manufacturer;
            OnAppConfig.Instance.SaveConfig();
          }
        });
      }
      catch
      {
      }
    }
    public static bool IsShowTip = true;
    void init()
    {
      //手机名称 Android.OS.Build.Manufacturer;
      //OnAppConfig.Instance.PhoneName = Android.OS.Build.Manufacturer;
      //#if DEBUG
      //CN.Jpush.Android.Api.JPushInterface.SetDebugMode(true);
      //#endif
      CN.Jpush.Android.Api.JPushInterface.Init(this);
    }
    void checkSomeInfo()
    {
      try
      {
        IsShowTip = true;
        var status = isNetworkAvailable(this);
        int internetStatus = 0;
        if (!status)
        {
          internetStatus = 0;
        }
        var isWifi = isWifiConnected(this);
        if (isWifi)
        {
          internetStatus = 2;
        }
        else
        {
          internetStatus = 1;
        }
      }
      catch (Exception ex)
      {
        Console.WriteLine($"android check some info erorr : {ex.Message}");
      }
    }
    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)
@@ -317,7 +73,10 @@
    public void OnActivityStarted(Activity activity)
    {
      //throw new NotImplementedException ();
            if (HDL_ON.OnAppConfig.Instance.FirstRunApp)
            {
                return;
            }
      mCount++;
      if (mCount == 1)
      {
@@ -349,7 +108,7 @@
      UnregisterActivityLifecycleCallbacks(this);
    }
    int mCount;
        public int mCount;
    ///// <summary>
    ///// 是否进入后台