首页 > 解决方案 > Xamarin.Forms 如何在录音/播放时显示进度指示器

问题描述

我想在我的应用程序中录制声音时显示进度指示器。为记录分配的时间量是预定义的。我在代码中进行了设置,假设最长录制时间为 10 秒,但用户可以在更短的时间内停止录制,当然他的进度指示器会停止并重置。

我一直在努力使它正常工作,请您提供一些指导。注意:我使用的是 NateRickard AudioRecorder nuget 包。

if (!recorder.IsRecording)
                {
                    buttonRecord.IsEnabled = false;
                    buttonPlay.IsEnabled = false;

                    DependencyService.Get<IAudioService>().PrepareRecording();

                    // start recording
                    var recordTask = await recorder.StartRecording();

                    // set up progress bar
                    //progressBarRecordTime.Progress = 1.0;
                    //await progressBarRecordTime.ProgressTo(1.0, 10000, Easing.Linear);

                    buttonRecord.Text = "Stop Recording";
                    buttonRecord.IsEnabled = true;

                    // get the recorded file
                    var recordedAudioFile = await recordTask;                       

                    buttonRecord.Text = "Record";
                    buttonPlay.IsEnabled = true;

                    if (recordedAudioFile != null)
                    {
                        var recordingFileDestinationPath = Path.Combine(FileSystem.AppDataDirectory, AppConstants.CUSTOM_ALERT_FILENAME);

                        if (File.Exists(recordingFileDestinationPath))
                        {
                            File.Delete(recordingFileDestinationPath);
                        }

                        File.Copy(recordedAudioFile, recordingFileDestinationPath);
                    }
                }

标签: xamarin.formsprogress-baraudio-recording

解决方案


在您的 xaml 代码(视图)中放置一个ActivityIndi ​​cator (将其命名为ind

在上面代码的顶部:

        ind.IsRunning = true;
        //
        if (!recorder.IsRecording)
        //

完成后,将其添加到您的代码下方

//
        }

        File.Copy(recordedAudioFile, recordingFileDestinationPath);
    }
}
ind.IsRunning = false;

推荐阅读