Xamarin.Forms在进行录音/播放时如何显示进度指示器

时间:2018-12-11 19:58:19

标签: xamarin.forms progress-bar audio-recording

我想在我的应用中录制声音时显示进度指示器。 分配给记录的时间量是预定义的。我将其设置为代码,可以说最长录制时间为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);
                    }
                }

1 个答案:

答案 0 :(得分:0)

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

在上面的代码顶部:

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

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

//
        }

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