using System;
using Android.App;
using Android.Content;
using Android.Net.Wifi;
using Android.OS;
using HDL_ON;
using Java.Util;
using Shared;
namespace HDL_ON_Android
{
///
/// 设定为默认启动的Application
///
[Android.App.Application(Theme = "@style/MyTheme")]
public class Application : Android.App.Application, Android.App.Application.IActivityLifecycleCallbacks
{
//处理安卓接收不到udp命令问题
WifiManager.MulticastLock multicast;
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()
{
if (Shared.Application.Activity != null)
{
//reStartApp(this);
return;
}
base.OnCreate();
WifiManager manager = (WifiManager)this.GetSystemService(Context.WifiService);
multicast = manager.CreateMulticastLock("UDPwifi");
Language.CurrentLanguage = "Chinese";
Locale locale1 = Locale.Default;
var localeList = Resources.Configuration.Locale;
Console.WriteLine("当前语言:" + localeList.Language);
if (localeList.Language == "zh")
{
Language.CurrentLanguage = "Chinese";
}
else
{
Language.CurrentLanguage = "English";
}
RegisterActivityLifecycleCallbacks(this);
}
public void OnActivityCreated(Activity activity, Bundle savedInstanceState)
{
}
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 ();
if (HDL_ON.OnAppConfig.Instance.FirstRunApp)
{
return;
}
mCount++;
if (mCount == 1)
{
Console.WriteLine("HHH OnActivityStarted:foreground");
BusSocketStart();
multicast.Acquire();
//后台回到前台
new HDL_ON.UI.AppUnlockPage().LoadPage();
}
}
public void OnActivityStopped(Activity activity)
{
mCount--;
if (mCount == 0)
{
Console.WriteLine("HHH OnActivityStopped: background");
BusSocketStop();
multicast.Release();
//进入后台
UserInfo.Current.unlockTime = DateTime.Now;
}
}
public override void OnTerminate()
{
base.OnTerminate();
UnregisterActivityLifecycleCallbacks(this);
}
public int mCount;
/////
///// 是否进入后台
/////
//public bool IsEnterBackground = false;
///
/// 进入后台的时间
///
DateTime CloseTime = DateTime.Now;
///
/// BusSocketStop
///
void BusSocketStop()
{
CloseTime = DateTime.Now;
MainPage.IsEnterBackground = true;
//进入后台mqtt正在连接重置状态
HDL_ON.DAL.Mqtt.MqttClient.RemoteMqttIsConnecting = false;
HDL_ON.DriverLayer.UdpSocket._BusSocket.Stop();
}
///
/// BusSocketStart
///
void BusSocketStart()
{
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();
}
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
}
///
/// 查询通知权限,并提示
///
public void QueryNotificationPermission()
{
}
}
}