using System;
|
using System.Net;
|
using System.Text;
|
using Android;
|
using Android.Content;
|
using Android.Net;
|
using Android.OS;
|
using CN.Jpush.Android.Api;
|
using CN.Jpush.Android.Service;
|
using Java.Util;
|
using Newtonsoft.Json.Linq;
|
using Shared;
|
using Shared.SimpleControl;
|
using SmartHome;
|
|
namespace com.hdl.on
|
{
|
/// <summary>
|
/// 设定为默认启动的Application
|
/// </summary>
|
[Android.App.Application]
|
public class Application : Android.App.Application
|
{
|
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 ();
|
|
initAll ();
|
com.freeview.global.Video.Start ();
|
}
|
/// <summary>
|
/// 所有初始化全部在这个方法实现
|
/// </summary>
|
void initAll ()
|
{
|
#if wallon
|
BaseActivity.TopMargin = -30;
|
BaseActivity.IsEnnableGPS = false;
|
BaseActivity.VerifyDateTime = DateTime.MaxValue;
|
BaseActivity.KeepScreenON = false;
|
#endif
|
Locale locale1 = Locale.Default;
|
var localeList = Resources.Configuration.Locale;
|
//if(localeList.Language == "zh") {
|
//Language.CurrentLanguage = "Chinese";
|
//}
|
|
string [] permissions = new string [] { Manifest.Permission.WriteExternalStorage, Manifest.Permission.RecordAudio,
|
Manifest.Permission.Camera, Manifest.Permission.ProcessOutgoingCalls, Manifest.Permission.GetAccounts};
|
|
var version = Build.VERSION.SdkInt + "";
|
Console.WriteLine ("Build.VERSION.SdkInt : " + version);
|
|
//Android.Support.V4.App.ActivityCompat.RequestPermissions (BaseActivity., permissions, 321);
|
|
BaseActivity.BackKeyAction = () => {
|
if (Shared.SimpleControl.MainPage.Loading != null) {
|
Console.WriteLine (MainPage.Loading.CurStatus);
|
if (Shared.SimpleControl.MainPage.Loading.CurStatus) {
|
//Shared.SimpleControl.MainPage.Loading.Hide ();
|
return;
|
}
|
}
|
try {
|
var lastView = Shared.Application.MainPage.GetChildren (Shared.Application.MainPage.ChildrenCount - 1);
|
//Console.WriteLine ("lastView " + lastView);
|
if (lastView != null && lastView.Tag.ToString () == "Dialog") {
|
if (SharedMethod.SharedMethod.CurPageLayout == null) {
|
BaseActivity.VerifyDateTime = DateTime.MaxValue;
|
return;
|
} else {
|
//Console.WriteLine ("Remove Dialog!!!!");
|
var lastView2 = Shared.Application.MainPage.GetChildren (Shared.Application.MainPage.ChildrenCount - 2);
|
lastView.RemoveFromParent ();
|
lastView2.RemoveFromParent ();
|
//Console.WriteLine ("Remove Dialog End!!!!");
|
BaseActivity.VerifyDateTime = DateTime.MinValue;
|
return;
|
}
|
}
|
} catch (System.Exception ezx) {
|
Console.WriteLine (ezx.Message);
|
}
|
if (SharedMethod.SharedMethod.CurPageLayout != null) {
|
if (SharedMethod.SharedMethod.CurPageLayout.ChildrenCount > 1) {
|
//Console.WriteLine ("Remove PageLayout Children!!!!");
|
SharedMethod.SharedMethod.CurPageLayout.GetChildren (SharedMethod.SharedMethod.CurPageLayout.ChildrenCount - 1).RemoveFromParent ();
|
//Console.WriteLine ("Remove PageLayout Children End!!!!");
|
BaseActivity.VerifyDateTime = DateTime.MinValue;
|
} else {
|
//Console.WriteLine ("BaseActivity.VerifyDateTime = DateTime.MaxValue");
|
BaseActivity.VerifyDateTime = DateTime.MaxValue;
|
}
|
}
|
};
|
BaseActivity.IsHideVirualButtons = true;
|
ZXing.Mobile.MobileBarcodeScanner.Initialize (this);
|
init ();
|
BaseActivity.OnCreateActoin += (activity, application) => {
|
Microsoft.AppCenter.AppCenter.Start ("7e0ba985-ae3b-4299-9483-b10f4041f8b2", typeof (Microsoft.AppCenter.Analytics.Analytics), typeof (Microsoft.AppCenter.Crashes.Crashes));
|
if (!string.IsNullOrEmpty (UserConfig.Instance.SetLanguage)) {
|
Language.CurrentLanguage = UserConfig.Instance.SetLanguage;
|
}
|
//保存获取的极光服务器上的注册ID到本地文件
|
#if wallon
|
#else
|
var tokenID = JPushInterface.GetRegistrationID (activity);
|
Console.WriteLine ("RegistrationID: " + tokenID);
|
if (!string.IsNullOrEmpty (tokenID) && UserConfig.Instance.tokenID != tokenID) {
|
UserConfig.Instance.tokenID = tokenID;
|
UserConfig.Instance.SaveUserConfig ();
|
}
|
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) && UserConfig.Instance.tokenID != tokenID) {
|
UserConfig.Instance.tokenID = tokenID;
|
UserConfig.Instance.SaveUserConfig ();
|
}
|
});
|
#endif
|
|
BaseActivity.NetworkStateChanged += (int obj) => {
|
MqttCommon.DisConnectRemoteMqttClient ("NetworkStateChanged");
|
Shared.SimpleControl.EquipmentPublicClass.CheckLinkRemote (obj);
|
};
|
|
};
|
BaseActivity.RefreshUIAction += (activity) => {
|
MainPage.Show ();
|
checkSomeInfo ();
|
};
|
BaseActivity.OnResumeAction += (activity) => {
|
//new System.Threading.Thread (() => {
|
// while (!MainPage.Showed) {
|
// System.Threading.Thread.Sleep (50);
|
// }
|
MqttCommon.DisConnectRemoteMqttClient ();
|
checkSomeInfo ();
|
Console.WriteLine ("Close OnResumeAction!!!");
|
WiFiSet.refreshView?.Invoke ();
|
};
|
BaseActivity.OnDestroyAction += (activity) => {
|
Console.WriteLine ("OnDestroyAction");
|
BusSocket.Stop ();
|
};
|
}
|
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);//保存手机名称到本地文件
|
//获取经纬度
|
MainPage.AirQuality = new AirQuality ();
|
Shared.Application.LocationAction = (arg1, arg2) => {
|
Shared.Application.LocationAction = null;
|
System.Threading.Tasks.Task.Run (() => {
|
while (true) {
|
System.Console.WriteLine ("Get Location GetAirQuality");
|
//获取天气
|
var webClient = new WebClient ();
|
string url = $"https://developer.hdlcontrol.com/Weather/Weather/FindCity/?lon={arg1}&lat={arg2}";
|
string responseString = null;
|
try {
|
responseString = Encoding.UTF8.GetString (webClient.DownloadData (url));
|
} catch (Exception ex) {
|
Console.WriteLine (ex.Message);
|
}
|
|
if (responseString != null) {
|
try {
|
var revertObj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePack> (responseString);
|
JObject jt = Newtonsoft.Json.JsonConvert.DeserializeObject<JObject> (revertObj.ResponseData.ToString ());
|
MainPage.AirQuality.city = jt ["City"].ToString ();
|
var cityId = jt ["Cid"].ToString ();
|
url = $"https://developer.hdlcontrol.com/Weather/Weather/GetAirQualityAndWeather/?cid={cityId}";
|
responseString = null;
|
responseString = Encoding.UTF8.GetString (webClient.DownloadData (url));
|
revertObj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePack> (responseString);
|
jt = Newtonsoft.Json.JsonConvert.DeserializeObject<JObject> (revertObj.ResponseData.ToString ());
|
MainPage.AirQuality.airQTemp = jt ["Temperature"].ToString ();
|
MainPage.AirQuality.airQHumidity = jt ["Humidity"].ToString ();
|
MainPage.AirQuality.airQAirPM25 = jt ["PM25"].ToString ();
|
MainPage.AirQuality.airQAirWeather = jt ["Weather"].ToString ();
|
break;
|
} catch (Exception ex) {
|
Console.WriteLine (ex.ToString ());
|
}
|
}
|
System.Threading.Thread.Sleep (1000);
|
}
|
Shared.Application.RunOnMainThread (() => {
|
CommonPage.RefreshAir?.Invoke ();
|
});
|
});
|
};
|
}
|
void checkSomeInfo ()
|
{
|
try {
|
RemoteInfo.Current.ReadMsgList (IsShowTip);
|
JPushInterface.ClearAllNotifications (this);
|
|
IsShowTip = true;
|
var status = isNetworkAvailable (this);
|
int internetStatus = 0;
|
if (!status) {
|
internetStatus = 0;
|
}
|
|
var isWifi = isWifiConnected (this);
|
if (isWifi) {
|
internetStatus = 2;
|
} else {
|
|
internetStatus = 1;
|
}
|
UserConfig.Instance.internetStatus = internetStatus;
|
Shared.SimpleControl.EquipmentPublicClass.CheckLinkRemote (internetStatus);
|
} 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;
|
}
|
}
|
[BroadcastReceiver]
|
[Android.App.IntentFilter (new string []
|
{ "cn.jpush.android.intent.REGISTRATION",
|
"cn.jpush.android.intent.MESSAGE_RECEIVED",
|
"cn.jpush.android.intent.NOTIFICATION_RECEIVED",
|
"cn.jpush.android.intent.NOTIFICATION_OPENED",
|
"cn.jpush.android.intent.CONNECTION"
|
},
|
Categories = new string [] { "com.hdl.in" })
|
]
|
public class JpushNotificationReceiver : BroadcastReceiver
|
{
|
static string ACTION = "android.intent.action.BOOT_COMPLETED";
|
|
public override void OnReceive (Context context, Intent intent)
|
{
|
try {
|
Console.WriteLine ("JpushNotificationReceiver" + intent.Action);
|
|
Bundle bundle = intent.Extras;
|
if (intent.Action == ACTION) {
|
//Console.WriteLine ("开机自动服务自动启动,PushService是要启动的服务 ");
|
var service = new Intent (context, typeof (PushService));
|
context.StartService (service);
|
}
|
//接收Registration Id
|
else if (JPushInterface.ActionRegistrationId == intent.Action) {
|
string regId = bundle.GetString (JPushInterface.ExtraRegistrationId);
|
//System.Console.WriteLine ("Registration ID:" + regId);
|
} else if (JPushInterface.ActionNotificationOpened == intent.Action) {
|
Console.WriteLine ("用户点击打开了通知");
|
Application.IsShowTip = false;
|
|
if (Shared.Application.Activity == null) {
|
var tempIntent = new Intent (context, typeof (Shared.BaseActivity));//Intent intent=new Intent( 起始组件对象 , 目标 Service.class);
|
tempIntent.SetFlags (ActivityFlags.BroughtToFront);
|
context.StartActivity (tempIntent);
|
} else {
|
(Shared.Application.Activity as BaseActivity).MoveToFront ();
|
RemoteInfo.Current.ReadMsgList (false);
|
}
|
} else {
|
Console.WriteLine ("极光推送!!!");
|
RemoteInfo.Current.ReadMsgList (true);
|
}
|
} catch (System.Exception e) {
|
Console.WriteLine ("极光推送出错:" + e.Message);
|
}
|
}
|
}
|
}
|