From 9f326f4000847e6167d8166fa2f6a66f53cb3734 Mon Sep 17 00:00:00 2001 From: 黄学彪 <hxb@hdlchina.com.cn> Date: 星期四, 17 十二月 2020 09:07:13 +0800 Subject: [PATCH] 新云端Ver1.3 --- ZigbeeApp/Shared/Phone/UserCenter/Abount/AbountForm.cs | 668 +++++++++++++++++++++++++++++++------------------------ 1 files changed, 372 insertions(+), 296 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Abount/AbountForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Abount/AbountForm.cs index afe3f2f..e4266a6 100755 --- a/ZigbeeApp/Shared/Phone/UserCenter/Abount/AbountForm.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/Abount/AbountForm.cs @@ -1,389 +1,329 @@ 锘縰sing System; using System.Collections.Generic; using System.Net; -using System.Runtime.Remoting.Contexts; using System.Text; using Shared.Common; -using Shared.Phone.Device.CommonForm; + namespace Shared.Phone.UserCenter.Abount { /// <summary> /// 鍏充簬鐨勭敾闈� /// </summary> - public class AbountForm : UserCenterCommonForm + public class AbountForm : EditorCommonForm { - #region **鍙橀噺***************************** + #region 鈼� 鍙橀噺____________________________ /// <summary> /// 鏄惁姝e湪鏇存柊涓� /// </summary> - public bool isUpdating=false; + public bool isUpdating; /// <summary> /// The web client. /// </summary> - public WebClient webClient=new WebClient { }; - /// <summary> - /// 杩涘害鏉� - /// </summary> - public HorizontalSeekBar seekBar; - /// <summary> - /// 杩涘害鐧惧垎姣� - /// </summary> - public Button seekBarTitle; - /// <summary> - /// 鍙栨秷涓嬭浇鎸夐挳 - /// </summary> - public Button cancelDownLoadBtn; - /// <summary> - /// 鏇存柊鎸夐挳 - /// </summary> - public Button updateBtn; + public WebClient webClient = new WebClient { }; /// <summary> /// 鏇存柊涓� /// </summary> - public Button updatingBtn; + public NormalViewControl btnUpdating; /// <summary> - /// The instance. + /// distributedMark /// </summary> - public static AbountForm instance; + public string distributedMark; + /// <summary> + /// updateRow + /// </summary> + public FrameRowControl rowUpdate; + /// <summary> + /// 涓嬭浇瀹夊崜apk鐨刡yte闀垮害 + /// </summary> + public long ApkBytesTotalLength = 0; + #endregion + /// <summary> - /// Initializes a new instance of the <see cref="T:Shared.Phone.UserCenter.Abount.AbountForm"/> class. + /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓) /// </summary> - public AbountForm() + public void ShowForm() { - instance = this; + //璁剧疆鏍囬淇℃伅 + base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uAboutMe)); + //鍒濆鍖栦腑閮ㄦ帶浠� + this.InitMiddleFrame(); } - /// <summary> - /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓) - /// </summary> - public void ShowForm() - { - //璁剧疆鏍囬淇℃伅 - base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uVersionInformation)); - //鍒濆鍖栦腑閮ㄦ帶浠� - this.InitMiddleFrame(); - } /// <summary> /// Closes the form. /// </summary> - public override void CloseForm(bool isCloseForm = true) + public override void CloseFormBefore() { #if Android - if(isUpdating==true) + SetDownLoadBtnNoVisible(); + CancelDownLoadApkAsync(); + base.CloseFormBefore(); +#elif iOS + base.CloseFormBefore(); +#endif + } + /// <summary> + /// 鍒濆鍖栦腑閮ㄦ帶浠� + /// </summary> + private void InitMiddleFrame() + { + //澶撮儴鐧借壊鑳屾櫙 + var frameLogo = new FrameLayoutBase(); + frameLogo.Height = Application.GetRealHeight(484); + frameLogo.BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor; + bodyFrameLayout.AddChidren(frameLogo); + //鍥炬爣 + 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 = "Evoyo Home"; + btnName.TextSize = 15; + btnName.TextColor = ZigbeeColor.Current.GXCTextDeepBlackColor; + btnName.TextAlignment = TextAlignment.Center; + frameLogo.AddChidren(btnName); + //鐗堟湰鍙� + var btnVersion = new NormalViewControl(700, 50, true); + btnVersion.Y = Application.GetRealHeight(366); + btnVersion.Gravity = Gravity.CenterHorizontal; + btnVersion.Text = $"{Language.StringByID(R.MyInternationalizationString.VersionCode)} {CommonPage.CodeIDString}"; + btnVersion.TextSize = 12; + btnVersion.TextColor = ZigbeeColor.Current.GXCTextGrayColor; + btnVersion.TextAlignment = TextAlignment.Center; + frameLogo.AddChidren(btnVersion); + //鍒楄〃鎺т欢 + var listView = new FrameListControl(12); + listView.Y = frameLogo.Bottom + Application.GetRealHeight(23); + listView.BackgroundColor = UserCenterColor.Current.White; + 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(); + rowService.ButtonClickEvent += (sender, e) => { - var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.CancelUpdating), Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim)); - alert.Show(); - alert.ResultEventHandler += (send, e) => + var form = new SLAForm(); + form.AddForm(); + }; + + //鐗堟湰鏇存柊 + this.rowUpdate = new FrameRowControl(listView.rowSpace / 2); + listView.AddChidren(rowUpdate); + rowUpdate.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.UpdateVersion), 400); + rowUpdate.AddRightArrow(); + var btnRightView = rowUpdate.AddMostRightView("", 400); + rowUpdate.CanClick = false; + rowUpdate.ButtonClickEvent += (sender, e) => + { + UpdateVersion(); + }; + //璋冩暣妗屽竷楂樺害 + listView.AdjustRealHeight(Application.GetRealHeight(23)); + + //鏇存柊涓� + this.btnUpdating = new NormalViewControl(556, 106, true); + btnUpdating.Y = Application.GetRealHeight(994); + btnUpdating.Radius = (uint)Application.GetRealHeight(53); + btnUpdating.BackgroundColor = ZigbeeColor.Current.GXCDailogBackGroundColor; + btnUpdating.TextID = R.MyInternationalizationString.Updating; + btnUpdating.TextSize = 15; + btnUpdating.TextColor = ZigbeeColor.Current.GXCTextWhiteColor; + btnUpdating.Gravity = Gravity.CenterHorizontal; + btnUpdating.TextAlignment = TextAlignment.Center; + bodyFrameLayout.AddChidren(btnUpdating); + + //璁剧疆杩涘害鎺т欢涓嶅彲瑙� + this.SetDownLoadBtnNoVisible(); + + //妫�娴嬫柊鐗堟湰 + HdlThreadLogic.Current.RunThread(async () => + { + var result = await CanUpdateAsync(); + HdlThreadLogic.Current.RunMain(() => { - if (e) + if (result) { - updateBtn.Visible = true; - SetDownLoadBtnNoVisible(); - CommonPage.CancelDownLoadApkAsync(); - base.CloseForm(isCloseForm); + //鏇存柊鏈�鏂扮増 + btnRightView.TextID = R.MyInternationalizationString.Update; + rowUpdate.CanClick = true; } else { - return; + btnRightView.TextID = R.MyInternationalizationString.TheAppVersionIsNewest; } - }; - } - else - { - Phone.UserView.HomePage.Instance.ScrollEnabled = true; - base.CloseForm(isCloseForm); - } -#elif iOS - base.CloseForm(isCloseForm); -#endif + }); + + }); } - /// <summary> - /// 鍒濆鍖栦腑閮ㄦ帶浠� - /// </summary> - private void InitMiddleFrame() - { - var logoBtn = new Button() - { - Width = Application.GetMinRealAverage(270), - Height = Application.GetMinRealAverage(270), - Y = Application.GetRealHeight(100), - UnSelectedImagePath = "Logo/Logo.png", - Gravity = Gravity.CenterHorizontal - }; - bodyFrameLayout.AddChidren(logoBtn); - var nameBtn = new Button() - { - Width = Application.GetMinRealAverage(700), - Height = Application.GetMinRealAverage(100), - Y = Application.GetRealHeight(100)+logoBtn.Bottom, - Gravity = Gravity.CenterHorizontal, - Text="HDL Home", - TextSize=20, - TextColor=ZigbeeColor.Current.GXCTextBlackColor - }; - bodyFrameLayout.AddChidren(nameBtn); - - var versionBtn = new Button() - { - Width = Application.GetMinRealAverage(700), - Height = Application.GetMinRealAverage(100), - Y = Application.GetRealHeight(10) + nameBtn.Bottom, - Gravity = Gravity.CenterHorizontal, - Text = $"v{CommonPage.CodeIDString}", - TextSize = 14, - TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor - }; - bodyFrameLayout.AddChidren(versionBtn); - - updateBtn = new Button() - { - Y= Application.GetRealHeight(50)+versionBtn.Bottom, - Width = Application.GetMinRealAverage(700), - Gravity = Gravity.CenterHorizontal, - Height =Application.GetRealHeight(Shared.Common.CommonPage.ButtonHeight), - TextID=R.MyInternationalizationString.Update, - TextColor=ZigbeeColor.Current.GXCTextBlueColor - }; - bodyFrameLayout.AddChidren(updateBtn); - updateBtn.MouseUpEventHandler += GetVersion; - - seekBar = new HorizontalSeekBar() - { - Y = updateBtn.Bottom + Application.GetRealHeight(50), - Width = Application.GetRealWidth(750), - Height = Application.GetRealHeight(80), - Gravity = Gravity.CenterHorizontal, - BackgroundColor = ZigbeeColor.Current.GXCSliderUnSelectedColor, - ThumbColor = 0x00000000, - ProgressColor = ZigbeeColor.Current.GXCButtonBlueColor, - Max = 100, - Progress = 0, - IsCanScrolled=false, - IsCanMove=false - }; - bodyFrameLayout.AddChidren(seekBar); - - seekBarTitle = new Button() - { - Y = updateBtn.Bottom + Application.GetRealHeight(50), - X= seekBar.Right+Application.GetRealWidth(10), - Width = Application.GetRealWidth(150), - Height = Application.GetRealHeight(80), - Text = $"{seekBar.Progress}%", - TextAlignment=TextAlignment.CenterLeft, - TextColor = ZigbeeColor.Current.GXCTextBlackColor, - }; - bodyFrameLayout.AddChidren(seekBarTitle); - - updatingBtn = new Button() - { - Y = seekBar.Bottom + Application.GetRealHeight(20), - Width = Application.GetRealWidth(300), - Height = Application.GetRealHeight(80), - TextID= R.MyInternationalizationString.Updating, - TextAlignment = TextAlignment.Center, - TextColor = ZigbeeColor.Current.GXCTextBlackColor, - Gravity=Gravity.CenterHorizontal - }; - bodyFrameLayout.AddChidren(updatingBtn); - cancelDownLoadBtn = new Button() - { - TextID = R.MyInternationalizationString.Cancel, - TextColor = ZigbeeColor.Current.GXCTextBlueColor, - Height = Application.GetRealHeight(80), - Width = Application.GetRealWidth(500), - Gravity = Gravity.CenterHorizontal, - Y = updatingBtn.Bottom + Application.GetRealHeight(500) - }; - bodyFrameLayout.AddChidren(cancelDownLoadBtn); -#if Android - cancelDownLoadBtn.MouseUpEventHandler += CancelDownLoadApk; -#endif - SetDownLoadBtnNoVisible(); - } /// <summary> /// 璁剧疆杩涘害鎺т欢涓嶅彲瑙� /// </summary> - public void SetDownLoadBtnNoVisible() + private void SetDownLoadBtnNoVisible() { - Phone.UserView.HomePage.Instance.ScrollEnabled = true; isUpdating = false; - updateBtn.Visible = true; - seekBar.Visible = seekBarTitle.Visible = cancelDownLoadBtn.Visible = updatingBtn.Visible = false; + btnUpdating.Visible = false; } /// <summary> /// 璁剧疆杩涘害鎺т欢鍙 /// </summary> - public void SetDownLoadBtnVisible() + private void SetDownLoadBtnVisible() { - Phone.UserView.HomePage.Instance.ScrollEnabled = false; isUpdating = true; - updateBtn.Visible = false; - seekBar.Visible = seekBarTitle.Visible = cancelDownLoadBtn.Visible = updatingBtn.Visible = true; + btnUpdating.Visible = true; + rowUpdate.CanClick = false; } + /// <summary> - /// Gets the version. + /// 妫�鏌ョ増鏈� /// </summary> - /// <param name="sender">Sender.</param> - /// <param name="e">E.</param> - private async void GetVersion(object sender, MouseEventArgs e) + /// <returns></returns> + private async System.Threading.Tasks.Task<bool> CanUpdateAsync() { #if iOS - try - { - CommonPage.Loading.Start(); - var versionResult = await Shared.Common.CommonPage.Instance.RequestHttpsiOSAppVersionAsync(); + try + { + var versionResult = await RequestHttpsiOSAppVersionAsync(); if (versionResult == null || versionResult.Results == null) { - CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.UpdateAppFail); - return; + return false; } var results = Newtonsoft.Json.Linq.JArray.Parse(versionResult.Results.ToString()); if (results[0] == null) { - CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.UpdateAppFail); - return; + return false; } var newVersion = results[0]["version"]?.ToString(); var updateContent = results[0]["releaseNotes"]?.ToString(); - if (newVersion != CommonPage.CodeIDString) + if (newVersion.CompareTo(CommonPage.CodeIDString) > 0) { - Application.RunOnMainThread(() => - { - var alert = new Alert(Language.StringByID(R.MyInternationalizationString.UpdateContent), updateContent, Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim)); - alert.Show(); - alert.ResultEventHandler += (sender1, e1) => - { - if (e1) - { - CommonPage.Instance.OpenUrl(); - } - }; - }); + return true; } - else - { - Application.RunOnMainThread(() => - { - var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.TheAppVersionIsNewest), Language.StringByID(R.MyInternationalizationString.Close)); - alert.Show(); - }); - } + return false; } catch { + return false; + } - } - finally - { - CommonPage.Loading.Hide(); - } #elif Android try { - CommonPage.Loading.Start(); - var versionResult = await CommonPage.Instance.RequestHttpsAndroidAppVersionAsync(); + var versionResult = RequestHttpsAndroidAppVersionAsync(); if (versionResult == null) { - CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.UpdateAppFail); - return; + return false; } - if (versionResult.FirmwareVersion != CommonPage.CodeIDString) + if (versionResult.FirmwareVersion.CompareTo(CommonPage.CodeIDString) > 0) { - var alert = new Alert(Language.StringByID(R.MyInternationalizationString.UpdateContent), versionResult.Remarks, Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim)); - alert.Show(); - alert.ResultEventHandler += async (sender1, e1) => - { - if (e1) - { - try - { - SetDownLoadBtnVisible(); - var requestObj = new SendDataToServer.DownLoadAndroidApk - { - RequestVersion = CommonPage.RequestVersion, - DistributedMark = versionResult.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) - { - SetDownLoadBtnNoVisible(); - CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.UpdateAppFail); - return; - } - var bytesTotalLength = Newtonsoft.Json.JsonConvert.DeserializeObject<long>(bytesTotalLengthResult.ResponseData.ToString()); - if (bytesTotalLength == 0) - { - SetDownLoadBtnNoVisible(); - CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.UpdateAppFail); - return; - } - CommonPage.ApkBytesTotalLength = bytesTotalLength; - var bytes = await CommonPage.Instance.DownLoadApkAsync("FirmwareMana/DownloadPlatformUploadFirmware", Encoding.UTF8.GetBytes(requestJson)); - if (bytes == null) - { - SetDownLoadBtnNoVisible(); - CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.UpdateAppFail); - return; - } - if(bytes.ToString().Contains("DownloadFail")) - { - SetDownLoadBtnNoVisible(); - CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain); - return; - } - var path = System.IO.Path.Combine(Shared.IO.FileUtils.RootPath, "home.apk"); - Shared.IO.FileUtils.WriteFileByBytes(path, bytes); - Install(Shared.Application.Activity); - } - catch(Exception ex) - { - SetDownLoadBtnNoVisible(); - System.Console.WriteLine($"涓嬭浇澶辫触--{ex.Message}"); - } - } - }; + distributedMark = versionResult.DistributedMark; + return true; } - else - { - var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.TheAppVersionIsNewest), Language.StringByID(R.MyInternationalizationString.Close)); - alert.Show(); - } + return false; } catch (Exception ex) { - SetDownLoadBtnNoVisible(); - System.Console.WriteLine(ex.Message); - } - finally - { - CommonPage.Loading.Hide(); + return false; } #endif } -#if Android /// <summary> - /// Cancels down load apk. + /// 鏇存柊 /// </summary> - private void CancelDownLoadApk(object sender,MouseEventArgs mouseEventArgs) + private async void UpdateVersion() { - var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.CancelUpdating), Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim)); - alert.Show(); - alert.ResultEventHandler += (send, e) => - { - if (e) - { - isUpdating = false; - updateBtn.Visible = true; - SetDownLoadBtnNoVisible(); - CommonPage.CancelDownLoadApkAsync(); - } - }; +#if iOS + OpenUrl(); +#elif Android + try + { + var pra = new { RequestVersion = CommonPage.RequestVersion, DistributedMark = distributedMark }; + var result = HdlFirmwareUpdateLogic.Current.RequestZigbeeHttps("FirmwareMana/DownloadPlatformUploadFirmwarePreLength", pra, 8); + if (result == null || result.Length == 0) + { + HdlMessageLogic.Current.ShowMassage(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.UpdateAppFail)); + return; + } + 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) + { + HdlMessageLogic.Current.ShowMassage(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.UpdateAppFail)); + return; + } + ApkBytesTotalLength = bytesTotalLength; + var bytes = await DownLoadApkAsync("FirmwareMana/DownloadPlatformUploadFirmware", Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(pra))); + if (bytes == null) + { + HdlMessageLogic.Current.ShowMassage(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.UpdateAppFail)); + return; + } + if (bytes.ToString().Contains("DownloadFail")) + { + HdlMessageLogic.Current.ShowMassage(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.FailedPleaseTryAgain)); + return; + } + var path = System.IO.Path.Combine(Shared.IO.FileUtils.RootPath, "home.apk"); + Shared.IO.FileUtils.WriteFileByBytes(path, bytes); + Install(Shared.Application.Activity); + } + catch (Exception ex) + { + System.Console.WriteLine($"涓嬭浇澶辫触--{ex.Message}"); + } +#endif } + +#if iOS + /// <summary> + /// 鑾峰彇iOS-APP鐗堟湰淇℃伅 + /// </summary> + /// <returns>The https app version async.</returns> + public async System.Threading.Tasks.Task<Common.ResponseEntity.ResultPack> RequestHttpsiOSAppVersionAsync() + { + try + { + var webClient = new WebClient { }; + var result = await webClient.DownloadDataTaskAsync("https://itunes.apple.com/lookup?id=1528702586"); + if (result == null) + { + return null; + } + return Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.ResultPack>(Encoding.UTF8.GetString(result)); + } + catch + { + return null; + } + } + /// <summary> + /// 璺宠浆鍒癆PP Store + /// </summary> + public void OpenUrl() + { + Uri url = new Uri("https://itunes.apple.com/cn/app/hdl-home/id1528702586?mt=8"); + UIKit.UIApplication.SharedApplication.OpenUrl(url); + } +#elif Android + /// <summary> /// Install the specified context. /// </summary> @@ -400,7 +340,7 @@ 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); //娣诲姞杩欎竴鍙ヨ〃绀哄鐩爣搴旂敤涓存椂鎺堟潈璇ri鎵�浠h〃鐨勬枃浠� intent.AddFlags(Android.Content.ActivityFlags.GrantReadUriPermission); intent.SetDataAndType(apkUri, "application/vnd.android.package-archive"); @@ -411,6 +351,142 @@ } context.StartActivity(intent); } + + /// <summary> + /// 鑾峰彇 Android-APP 鐗堟湰淇℃伅 + /// </summary> + /// <returns>The https app version async.</returns> + private ApkInfoOBJ RequestHttpsAndroidAppVersionAsync() + { + try + { + 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; + } + var jobject = Newtonsoft.Json.Linq.JObject.Parse(Encoding.UTF8.GetString(result)); + if (jobject.Property("StateCode") == null || jobject["StateCode"].ToString().ToUpper() != "SUCCESS") + { + 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) + { + return null; + } + } + + /// <summary> + /// 涓嬭浇瀹夎apk + /// </summary> + /// <returns>The load apk async.</returns> + /// <param name="requestUrl">璇锋眰閾炬帴</param> + /// <param name="byteData">璇锋眰鍙傛暟</param> + private System.Threading.Tasks.Task<byte[]> DownLoadApkAsync(string requestUrl, byte[] byteData) + { + try + { + webClient.Headers.Add(HttpRequestHeader.ContentType, "application/json"); + webClient.UploadProgressChanged += Client_DownloadProgressChanged; + webClient.UploadDataCompleted += Client_UploadCompleted; + var result = webClient.UploadDataTaskAsync($"{HdlFirmwareUpdateLogic.Current.RequestHttpsHost}/{requestUrl}", "POST", byteData); + if (result == null) + { + return null; + } + return result; + } + catch (Exception ex) + { + return null; + } + finally + { + } + } + /// <summary> + /// apk涓嬭浇杩涘害 + /// </summary> + /// <param name="sender">Sender.</param> + /// <param name="e">E.</param> + void Client_DownloadProgressChanged(object sender, UploadProgressChangedEventArgs e) + { + //System.Console.WriteLine($"褰撳墠杩涘害--{(int)(e.BytesReceived / (float)ApkBytesTotalLength * 100)} % --BytesReceived--{e.BytesReceived}--totalByte{e.TotalBytesToReceive}"); + if (e.BytesReceived <= ApkBytesTotalLength) + { + Application.RunOnMainThread(() => + { + SetDownLoadBtnVisible(); + btnUpdating.Text = $"{ Language.StringByID(R.MyInternationalizationString.Updating)} {(int)(e.BytesReceived / (float)ApkBytesTotalLength * 100)}%"; + }); + } + } + + /// <summary> + /// Client_UploadCompleted + /// </summary> + /// <param name="sender"></param> + /// <param name="e"></param> + void Client_UploadCompleted(object sender, UploadDataCompletedEventArgs e) + { + System.Console.WriteLine("涓嬭浇apk瀹屾垚"); + SetDownLoadBtnNoVisible(); + } + /// <summary> + /// 鍙栨秷涓嬭浇apk + /// </summary> + private void CancelDownLoadApkAsync() + { + webClient?.CancelAsync(); + SetDownLoadBtnNoVisible(); + System.Console.WriteLine("鍙栨秷涓嬭浇apk"); + } #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; } + } } } -- Gitblit v1.8.0