xamarin.forms - 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);
}
}
解决方案
在您的 xaml 代码(视图)中放置一个ActivityIndi cator (将其命名为ind)
在上面代码的顶部:
ind.IsRunning = true;
//
if (!recorder.IsRecording)
//
完成后,将其添加到您的代码下方
//
}
File.Copy(recordedAudioFile, recordingFileDestinationPath);
}
}
ind.IsRunning = false;
推荐阅读
- android - 自定义`FloatingTitleTextInputField`在react-native中不接受TextInput的某些属性
- java - 如何根据某个字段从列表中删除重复的对象,但在删除之前添加一个数量?
- angular - 单元测试 Angular 路由器事件 NavigationEnd
- javascript - @PostMapping 与多个 RequestParams
- java - Xpath 表达式跳过根并获取字段值
- delphi - 在firedac中使用别名编辑查询会出错
- java - 如何将多列附加到一列?
- git - 如何在 Git 中修复对上层的提交?
- c# - 如何仅在子窗体关闭后才执行代码?C#
- go - 如何在 go 中克隆存储库?