예제 #1
0
        void btnProgressDialog_Clicked(object sender, EventArgs e)
        {
            if (bgWorker != null && bgWorker.IsBusy == true)
            {
                Acr.UserDialogs.UserDialogs.Instance.Toast("BackgroundWorker is busy.", dismissTimer: TimeSpan.FromSeconds(5));
                return;
            }

            bgWorker = new System.ComponentModel.BackgroundWorker();
            bgWorker.WorkerReportsProgress = true;
            bgWorker.DoWork             += bgWorker_DoWork;
            bgWorker.ProgressChanged    += bgWorker_ProgressChanged;
            bgWorker.RunWorkerCompleted += bgWorker_RunWorkerCompleted;


            dialog = Acr.UserDialogs.UserDialogs.Instance.Progress();
            bgWorker.RunWorkerAsync();
        }
예제 #2
0
        void download(UpdateInfo updateInfo)
        {
            System.ComponentModel.BackgroundWorker bgWorker = null;

            Acr.UserDialogs.IProgressDialog progressDialog = null;

            bgWorker         = new System.ComponentModel.BackgroundWorker();
            bgWorker.DoWork += (bgSender, bgArgs) =>
            {
                var        objArgs      = bgArgs.Argument as object[];
                UpdateInfo _updateInfo_ = objArgs[0] as UpdateInfo;
                new Util.DownloadUtils().DownloadFileByHttpRequest
                (
                    requestUri: _updateInfo_.Url,
                    fileLength: _updateInfo_.FileLength,
                    saveFileFolder: System.IO.Path.Combine(Common.StaticInfo.AndroidExternalCachePath, "UpdateAPKs"),
                    renameDownloadFileName: string.Empty, // string.Empty 取默认文件名
                    backgroundWorker: bgWorker,
                    eventArgs: bgArgs                     // 传入 bgArgs 参数, 在 DownloadFileByHttpRequest 返回结果 -- 下载文件的最终路径
                );

                System.Threading.Thread.Sleep(500); // 为显示进度 100 %
            };

            bgWorker.RunWorkerCompleted += (bgSender, bgResult) =>
            {
                progressDialog.Hide();
                if (bgResult.Error != null)
                {
                    Acr.UserDialogs.UserDialogs.Instance.Alert(new Acr.UserDialogs.AlertConfig()
                    {
                        Title   = "捕获异常",
                        Message = bgResult.Error.GetFullInfo()
                    });
                }
                else
                {
                    try
                    {
                        string path = bgResult.Result as string;
                        System.Diagnostics.Debug.WriteLine($"打开APK安装器。APK路径[{path}]");
                        App.AndroidIntentUtils.InstallAPK(path);
                    }
                    catch (Exception ex)
                    {
                        string msg = $"{ex.GetFullInfo()}";
                        System.Diagnostics.Debug.WriteLine(msg);
                        Acr.UserDialogs.UserDialogs.Instance.Alert(new Acr.UserDialogs.AlertConfig()
                        {
                            Title   = "捕获异常",
                            Message = msg
                        });
                    }
                }
            };

            bgWorker.WorkerReportsProgress = true;
            bgWorker.ProgressChanged      += (bgSender, bgArgs) =>
            {
                if (progressDialog.IsShowing == false)
                {
                    progressDialog.Show();
                }
                progressDialog.Title           = $"正在下载...";
                progressDialog.PercentComplete = bgArgs.ProgressPercentage;
            };

            progressDialog = Acr.UserDialogs.UserDialogs.Instance.Progress();
            bgWorker.RunWorkerAsync(new object[] { updateInfo });
        }
예제 #3
0
 public static void LoadProgressDialog(string title)
 {
     currentProgressDialog = Acr.UserDialogs.UserDialogs.Instance.Loading(title, maskType: Acr.UserDialogs.MaskType.Clear);
 }
예제 #4
0
 public static void DisposeProgressDialog()
 {
     currentProgressDialog?.Dispose();
     currentProgressDialog = null;
 }
        private void RequestDeleteSound()
        {
            loading = Acr.UserDialogs.UserDialogs.Instance.Loading("Deleting Sound. Sending Request...");

            string hwid  = Android.OS.Build.Serial;
            var    prefs = PreferenceManager.GetDefaultSharedPreferences(Application.Context);
            ISharedPreferencesEditor editor = prefs.Edit();
            String gcmID = prefs.GetString("GCMID", "");

            var soundInfo = JsonConvert.SerializeObject(sound);

            try
            {
                if (string.IsNullOrEmpty(micId))
                {
                    loading.Hide();
                    Acr.UserDialogs.UserDialogs.Instance.ErrorToast("Error: Missing ID");
                    return;
                }


                var client     = new RestClient(Shared.SERVERURL);
                var request    = new RestRequest("resource/{id}", Method.POST);
                var parameters = new Dictionary <string, string>();

                parameters.Add(Shared.ParamType.REQUEST_CODE, Shared.RequestCode.DELETE_SOUND.ToString());
                parameters.Add(Shared.ParamType.WAVIO_ID, micId);
                parameters.Add(Shared.ParamType.GCM_ID, gcmID);
                parameters.Add(Shared.ParamType.HWID, hwid);
                parameters.Add(Shared.ParamType.SOUND_NAME, sound.sound_name);
                string requestJson = JsonConvert.SerializeObject(parameters);
                request.AddParameter(Shared.ParamType.REQUEST, requestJson);

                Console.WriteLine("Waiting for response");


                client.ExecuteAsync(request, response => {
                    ServerResponse serverResponse = JsonConvert.DeserializeObject <ServerResponse>(response.Content);

                    if (serverResponse == null)
                    {
                        loading.Hide();
                        Acr.UserDialogs.UserDialogs.Instance.ShowError("Server error!");
                        return;
                    }


                    if (serverResponse.error == Shared.ServerResponsecode.OK)
                    {
                        //loading.Hide();
                        //Acr.UserDialogs.UserDialogs.Instance.ShowSuccess("Updated Successfully");
                        loading = Acr.UserDialogs.UserDialogs.Instance.Loading("Deleting Sound. Waiting For Mic...", RequestCancel);
                        //var intent = new Intent(parent, typeof(MicSoundsActivity));
                        //parent.NavigateUpTo(intent);
                    }

                    else if (serverResponse.error == Shared.ServerResponsecode.DATABASE_ERROR)
                    {
                        loading.Hide();
                        Acr.UserDialogs.UserDialogs.Instance.ShowError("Server error!");
                    }
                    else
                    {
                        if (serverResponse.request != Shared.RequestCode.EDIT_SOUND)
                        {
                            loading.Hide();
                            Acr.UserDialogs.UserDialogs.Instance.ShowError("Request type mismatch!");
                            return;
                        }
                        loading.Hide();
                        Acr.UserDialogs.UserDialogs.Instance.ShowError("Unknown error!");
                    }
                    return;
                });
            }
            catch (WebException ex)
            {
                string _exception = ex.ToString();
                loading.Hide();
                Acr.UserDialogs.UserDialogs.Instance.ShowError("Network error!");
                Console.WriteLine("--->" + _exception);
            }
        }