| | |
| | | frameLogo.Height = Application.GetRealHeight(484);
|
| | | frameLogo.BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
|
| | | bodyFrameLayout.AddChidren(frameLogo);
|
| | | //图标的容器
|
| | | var frameLogoBackground = new FrameLayoutBase();
|
| | | frameLogoBackground.Y = Application.GetRealHeight(104);
|
| | | frameLogoBackground.Width = this.GetPictrueRealSize(167);
|
| | | frameLogoBackground.Height = this.GetPictrueRealSize(167);
|
| | | frameLogoBackground.Gravity = Gravity.CenterHorizontal;
|
| | | frameLogoBackground.BackgroundColor = ZigbeeColor.Current.GXCButtonBlackSelectedColor;
|
| | | frameLogoBackground.Radius = (uint)Application.GetRealHeight(37);
|
| | | frameLogo.AddChidren(frameLogoBackground);
|
| | | //图标
|
| | | var btnLogo = new IconViewControl(144);
|
| | | btnLogo.UnSelectedImagePath = "Account/Logo_White.png";
|
| | | btnLogo.Gravity = Gravity.Center;
|
| | | frameLogoBackground.AddChidren(btnLogo);
|
| | | //HDL Home
|
| | | var btnLogo = new ImageView();
|
| | | btnLogo.Y = Application.GetRealHeight(104);
|
| | | btnLogo.Width = this.GetPictrueRealSize(167);
|
| | | btnLogo.Height = this.GetPictrueRealSize(167);
|
| | | btnLogo.Radius = (uint)Application.GetRealHeight(37);
|
| | | btnLogo.ImagePath = "Account/Logo_Evoyo.png";
|
| | | btnLogo.Gravity = Gravity.CenterHorizontal;
|
| | | frameLogo.AddChidren(btnLogo);
|
| | | //Evoyo Home
|
| | | var btnName = new NormalViewControl(700, 60, true);
|
| | | btnName.Y = Application.GetRealHeight(294);
|
| | | btnName.Gravity = Gravity.CenterHorizontal;
|
| | | btnName.Text = "HDL Home";
|
| | | btnName.Text = "Evoyo Home";
|
| | | btnName.TextSize = 15;
|
| | | btnName.TextColor = ZigbeeColor.Current.GXCTextDeepBlackColor;
|
| | | btnName.TextAlignment = TextAlignment.Center;
|
| | |
| | | listView.Height = Application.GetRealHeight(500);
|
| | | bodyFrameLayout.AddChidren(listView);
|
| | | //服务协议
|
| | | //var rowService = new FrameRowControl(listView.rowSpace / 2);
|
| | | //listView.AddChidren(rowService);
|
| | | //rowService.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.SLA), 400);
|
| | | //rowService.AddRightArrow();
|
| | | //rowService.AddBottomLine();
|
| | | var rowService = new FrameRowControl(listView.rowSpace / 2);
|
| | | listView.AddChidren(rowService);
|
| | | rowService.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.SLA), 400);
|
| | | rowService.AddRightArrow();
|
| | | rowService.AddBottomLine();
|
| | | rowService.ButtonClickEvent += (sender, e) =>
|
| | | {
|
| | | var form = new SLAForm();
|
| | | form.AddForm();
|
| | | };
|
| | |
|
| | | //版本更新
|
| | | this.rowUpdate = new FrameRowControl(listView.rowSpace / 2);
|
| | | listView.AddChidren(rowUpdate);
|
| | |
| | | });
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// CheckVersion
|
| | | /// </summary>
|
| | | private void CheckVersion()
|
| | | {
|
| | | new System.Threading.Thread(async () =>
|
| | | {
|
| | | |
| | | })
|
| | | { IsBackground = true }.Start();
|
| | |
|
| | | }
|
| | | /// <summary>
|
| | | /// 设置进度控件不可见
|
| | | /// </summary>
|
| | |
| | | #elif Android
|
| | | try
|
| | | {
|
| | | var versionResult = await RequestHttpsAndroidAppVersionAsync();
|
| | | var versionResult = RequestHttpsAndroidAppVersionAsync();
|
| | | if (versionResult == null)
|
| | | {
|
| | | return false;
|
| | | }
|
| | | if (int.Parse(versionResult.FirmwareVersion.Replace(".", "")) > int.Parse(CommonPage.CodeIDString.Replace(".", "")))
|
| | | if (versionResult.FirmwareVersion.CompareTo(CommonPage.CodeIDString) > 0)
|
| | | {
|
| | | distributedMark = versionResult.DistributedMark;
|
| | | return true;
|
| | |
| | | #elif Android
|
| | | try
|
| | | {
|
| | | var requestObj = new SendDataToServer.DownLoadAndroidApk
|
| | | var pra = new { RequestVersion = CommonPage.RequestVersion, DistributedMark = distributedMark };
|
| | | var result = HdlFirmwareUpdateLogic.Current.RequestZigbeeHttps("FirmwareMana/DownloadPlatformUploadFirmwarePreLength", pra, 8);
|
| | | if (result == null || result.Length == 0)
|
| | | {
|
| | | RequestVersion = CommonPage.RequestVersion,
|
| | | DistributedMark = distributedMark
|
| | | };
|
| | | var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(requestObj);
|
| | |
|
| | | var bytesTotalLengthResult = await CommonPage.Instance.RequestHttpsZigbeeAsync("FirmwareMana/DownloadPlatformUploadFirmwarePreLength", Encoding.UTF8.GetBytes(requestJson));
|
| | | if (bytesTotalLengthResult == null || bytesTotalLengthResult.ResponseData == null)
|
| | | {
|
| | | CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.UpdateAppFail);
|
| | | HdlMessageLogic.Current.ShowMassage(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.UpdateAppFail));
|
| | | return;
|
| | | }
|
| | | var bytesTotalLength = Newtonsoft.Json.JsonConvert.DeserializeObject<long>(bytesTotalLengthResult.ResponseData.ToString());
|
| | | var jobject = Newtonsoft.Json.Linq.JObject.Parse(Encoding.UTF8.GetString(result));
|
| | | if (jobject.Property("StateCode") == null || jobject["StateCode"].ToString().ToUpper() != "SUCCESS")
|
| | | {
|
| | | HdlMessageLogic.Current.ShowMassage(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.UpdateAppFail));
|
| | | return;
|
| | | }
|
| | |
|
| | | var bytesTotalLength = Newtonsoft.Json.JsonConvert.DeserializeObject<long>(jobject["ResponseData"].ToString());
|
| | | if (bytesTotalLength == 0)
|
| | | {
|
| | | CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.UpdateAppFail);
|
| | | HdlMessageLogic.Current.ShowMassage(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.UpdateAppFail));
|
| | | return;
|
| | | }
|
| | | ApkBytesTotalLength = bytesTotalLength;
|
| | | var bytes = await DownLoadApkAsync("FirmwareMana/DownloadPlatformUploadFirmware", Encoding.UTF8.GetBytes(requestJson));
|
| | | var bytes = await DownLoadApkAsync("FirmwareMana/DownloadPlatformUploadFirmware", Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(pra)));
|
| | | if (bytes == null)
|
| | | {
|
| | | CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.UpdateAppFail);
|
| | | HdlMessageLogic.Current.ShowMassage(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.UpdateAppFail));
|
| | | return;
|
| | | }
|
| | | if (bytes.ToString().Contains("DownloadFail"))
|
| | | {
|
| | | CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain);
|
| | | HdlMessageLogic.Current.ShowMassage(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.FailedPleaseTryAgain));
|
| | | return;
|
| | | }
|
| | | var path = System.IO.Path.Combine(Shared.IO.FileUtils.RootPath, "home.apk");
|
| | |
| | | try
|
| | | {
|
| | | var webClient = new WebClient { };
|
| | | var result = await webClient.DownloadDataTaskAsync("https://itunes.apple.com/lookup?id=1461693569");
|
| | | var result = await webClient.DownloadDataTaskAsync("https://itunes.apple.com/lookup?id=1528702586");
|
| | | if (result == null)
|
| | | {
|
| | | return null;
|
| | |
| | | /// </summary>
|
| | | public void OpenUrl()
|
| | | {
|
| | | Uri url = new Uri("https://itunes.apple.com/cn/app/hdl-home/id1461693569?mt=8");
|
| | | Uri url = new Uri("https://itunes.apple.com/cn/app/hdl-home/id1528702586?mt=8");
|
| | | UIKit.UIApplication.SharedApplication.OpenUrl(url);
|
| | | }
|
| | | #elif Android
|
| | |
| | | if (Android.OS.BuildVersionCodes.M < Android.OS.Build.VERSION.SdkInt)
|
| | | {
|
| | | //参数1 上下文, 参数2 Provider主机地址 和配置文件中保持一致 参数3 共享的文件
|
| | | var apkUri = Android.Support.V4.Content.FileProvider.GetUriForFile(context, "com.hdl.home.fileProvider", file);
|
| | | var apkUri = Android.Support.V4.Content.FileProvider.GetUriForFile(context, "com.evoyo.home.fileProvider", file);
|
| | | //添加这一句表示对目标应用临时授权该Uri所代表的文件
|
| | | intent.AddFlags(Android.Content.ActivityFlags.GrantReadUriPermission);
|
| | | intent.SetDataAndType(apkUri, "application/vnd.android.package-archive");
|
| | |
| | | /// 获取 Android-APP 版本信息
|
| | | /// </summary>
|
| | | /// <returns>The https app version async.</returns>
|
| | | private async System.Threading.Tasks.Task<Common.ResponseEntity.ApkInfoOBJ> RequestHttpsAndroidAppVersionAsync()
|
| | | private ApkInfoOBJ RequestHttpsAndroidAppVersionAsync()
|
| | | {
|
| | | try
|
| | | {
|
| | | var requestOBJ = new SendDataToServer.GetAndroidApkInfoOBJ
|
| | | {
|
| | | Name = "ZigbeeApp",
|
| | | RequestVersion = CommonPage.CodeIDString
|
| | | };
|
| | | var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(requestOBJ);
|
| | | var result = await CommonPage.Instance.RequestHttpsZigbeeAsync("FirmwareMana/DetectionPlatformUploadFirmware", System.Text.Encoding.UTF8.GetBytes(requestJson));
|
| | | if (result == null)
|
| | | var pra = new { Name = "ZigbeeApp", RequestVersion = Common.CommonPage.RequestVersion };
|
| | | var result = HdlFirmwareUpdateLogic.Current.RequestZigbeeHttps("FirmwareMana/DetectionPlatformUploadFirmware", pra, 4);
|
| | | if (result == null || result.Length == 0)
|
| | | {
|
| | | return null;
|
| | | }
|
| | | if (result.StateCode.ToUpper() == "SUCCESS")
|
| | | var jobject = Newtonsoft.Json.Linq.JObject.Parse(Encoding.UTF8.GetString(result));
|
| | | if (jobject.Property("StateCode") == null || jobject["StateCode"].ToString().ToUpper() != "SUCCESS")
|
| | | {
|
| | | if (result.ResponseData == null)
|
| | | {
|
| | | return null;
|
| | | }
|
| | |
|
| | | var responeData = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.ApkInfoRes>(result.ResponseData.ToString());
|
| | | if (responeData == null || responeData.pageData == null || responeData.pageData.Count == 0)
|
| | | {
|
| | | return null;
|
| | | }
|
| | | int MaxIndex = 0;
|
| | | int NewVersion = 0;
|
| | | for (int i = 0; i < responeData.pageData.Count; i++)
|
| | | {
|
| | | var apkInfo = responeData.pageData[i];
|
| | | var version = int.Parse(apkInfo.FirmwareVersion.Replace(".", ""));
|
| | | if (version > NewVersion)
|
| | | {
|
| | | NewVersion = version;
|
| | | MaxIndex = i;
|
| | | }
|
| | | }
|
| | | return responeData.pageData[MaxIndex];
|
| | | return null;
|
| | | }
|
| | | return null;
|
| | | string resultValue = jobject["ResponseData"].ToString();
|
| | |
|
| | | var responeData = Newtonsoft.Json.JsonConvert.DeserializeObject<ApkInfoRes>(resultValue);
|
| | | if (responeData == null || responeData.pageData == null || responeData.pageData.Count == 0)
|
| | | {
|
| | | return null;
|
| | | }
|
| | |
|
| | | ApkInfoOBJ apkInfoOBJ = null;
|
| | | for (int i = 0; i < responeData.pageData.Count; i++)
|
| | | {
|
| | | var apkInfo = responeData.pageData[i];
|
| | | if (apkInfoOBJ == null || apkInfo.FirmwareVersion.CompareTo(apkInfoOBJ.FirmwareVersion) > 0)
|
| | | {
|
| | | apkInfoOBJ = apkInfo;
|
| | | }
|
| | | }
|
| | | return apkInfoOBJ;
|
| | | }
|
| | | catch (Exception ex)
|
| | | {
|
| | |
| | | try
|
| | | {
|
| | | webClient.Headers.Add(HttpRequestHeader.ContentType, "application/json");
|
| | | webClient.Headers.Add(HttpRequestHeader.Authorization, Config.Instance.Token);
|
| | | webClient.UploadProgressChanged += Client_DownloadProgressChanged;
|
| | | webClient.UploadDataCompleted += Client_UploadCompleted;
|
| | | var result = webClient.UploadDataTaskAsync($"{CommonPage.RequestHttpsHost}/{requestUrl}", "POST", byteData);
|
| | | var result = webClient.UploadDataTaskAsync($"{HdlFirmwareUpdateLogic.Current.RequestHttpsHost}/{requestUrl}", "POST", byteData);
|
| | | if (result == null)
|
| | | {
|
| | | return null;
|
| | |
| | | }
|
| | | #endif
|
| | |
|
| | | //[Serializable]
|
| | | public class ApkInfoRes
|
| | | {
|
| | | public int PageIndex;
|
| | | public int PageSize;
|
| | | public int TotalCount;
|
| | | public int TotalPages;
|
| | | public bool HasPreviousPage;
|
| | | public bool HasNextPage;
|
| | | public List<ApkInfoOBJ> pageData = new List<ApkInfoOBJ> { };
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 下载apk
|
| | | /// </summary>
|
| | | [Serializable]
|
| | | public class ApkInfoOBJ
|
| | | {
|
| | | public string Name { get; set; }
|
| | | public string FirmwareVersion { get; set; }
|
| | | public string Remarks { get; set; }
|
| | | public string DistributedMark { get; set; }
|
| | | public string Id { get; set; }
|
| | | public string CreatedOnUtc { get; set; }
|
| | | }
|
| | | }
|
| | | }
|