using System;
|
using System.Net;
|
using Android;
|
using Android.App;
|
using Android.Content;
|
using Android.Net;
|
using Android.OS;
|
using CN.Jpush.Android.Api;
|
using HDL_ON;
|
using Java.Util;
|
using Shared;
|
|
namespace HDL_ON_Android
|
{
|
/// <summary>
|
/// 设定为默认启动的Application
|
/// </summary>
|
[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()
|
{
|
if (Shared.Application.Activity != null)
|
{
|
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;
|
init();
|
BaseActivity.OnCreateActoin += (activity, application) =>
|
{
|
Language.CurrentLanguage = "Chinese";
|
Locale locale1 = Locale.Default;
|
var localeList = Resources.Configuration.Locale;
|
if (localeList.Language == "zh")
|
{
|
Language.CurrentLanguage = "Chinese";
|
}
|
|
//获取极光推送ID
|
GetJPushRegistrationID(activity);
|
|
BaseActivity.NetworkStateChanged += (int obj) =>
|
{
|
if (!IsEnterBackground)
|
{
|
//BusSocket.Stop();
|
new System.Threading.Thread(() =>
|
{
|
System.Threading.Thread.Sleep(1000);
|
//BusSocket.Start();
|
})
|
{ IsBackground = true }.Start();
|
}
|
else
|
{
|
Console.WriteLine("HHH 网络变化但处于后台");
|
}
|
MainPage.InternetStatus = obj;
|
};
|
};
|
BaseActivity.RefreshUIAction += (activity) =>
|
{
|
MainPage.Show();
|
checkSomeInfo();
|
};
|
BaseActivity.OnResumeAction += (activity) =>
|
{
|
checkSomeInfo();
|
new HDL_ON.UI.AppUnlockPage().LoadPage();
|
};
|
BaseActivity.OnDestroyAction += (activity) =>
|
{
|
Console.WriteLine("OnDestroyAction");
|
//BusSocket.Stop();
|
UserInfo.Current.unlockTime = DateTime.Now;
|
};
|
|
|
HDLUtils.SetAuthoritiesName("com.hdl.onpro.fileProvider");
|
|
//Shared.Application.IsGpsEnable = true;
|
|
//获取经纬度
|
Shared.Application.LocationAction = (lon, lat) =>
|
{
|
try
|
{
|
Shared.Application.LocationAction = null;
|
Shared.Application.StopGPSLocationService();
|
new HDL_ON.DAL.Server.HttpServerRequest().GetCityInfo(lon.ToString(), lat.ToString());
|
}
|
catch
|
{
|
|
}
|
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) && UserInfo.Current.PushDeviceToken != tokenID)
|
{
|
UserInfo.Current.PushDeviceToken = tokenID;
|
UserInfo.Current.PhoneName = Android.OS.Build.Manufacturer;
|
UserInfo.Current.SaveUserInfo();
|
}
|
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) && UserInfo.Current.PushDeviceToken != tokenID)
|
{
|
UserInfo.Current.PushDeviceToken = tokenID;
|
UserInfo.Current.PhoneName = Android.OS.Build.Manufacturer;
|
UserInfo.Current.SaveUserInfo();
|
}
|
});
|
|
}
|
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)
|
{
|
|
}
|
|
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();
|
}
|
}
|
|
public void OnActivityStopped(Activity activity)
|
{
|
|
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;
|
|
/// <summary>
|
/// BusSocketStop
|
/// </summary>
|
void BusSocketStop()
|
{
|
IsEnterBackground = true;
|
//BusSocket.Stop();
|
UserInfo.Current.unlockTime = DateTime.Now;
|
}
|
|
|
/// <summary>
|
/// BusSocketStart
|
/// </summary>
|
void BusSocketStart()
|
{
|
IsEnterBackground = false;
|
|
//BusSocket.Start();
|
}
|
}
|
|
}
|