【发布时间】:2020-05-18 08:20:41
【问题描述】:
我想使用 xamarin 表单录制音频:
我的 xaml 中有这段代码:
<StackLayout Spacing="15">
<StackLayout Orientation="Horizontal">
<Switch x:Name="TimeoutSwitch"
IsToggled="True" />
<Label Text="Stop after silence?"/>
</StackLayout>
<Button x:Name="RecordButton"
Text="Record"
Clicked="Record_Clicked"/>
<Button x:Name="ReproduceButton"
Text="Play"
Clicked="Reproduce_Clicked"
IsEnabled="False"/>
</StackLayout>
这是我的代码:
public partial class MainPage : ContentPage
{
AudioRecorderService recorder;
AudioPlayer player;
public MainPage()
{
InitializeComponent();
var mainDir = FileSystem.AppDataDirectory;
recorder = new AudioRecorderService
{
StopRecordingAfterTimeout = true,
TotalAudioTimeout = TimeSpan.FromSeconds(15),
AudioSilenceTimeout = TimeSpan.FromSeconds(2)
};
player = new AudioPlayer();
player.FinishedPlaying += Finalize_Reproduction;
}
public async void Record_Clicked(object sender, EventArgs e)
{
try
{
if (!recorder.IsRecording)
{
recorder.StopRecordingOnSilence = TimeoutSwitch.IsToggled;
RecordButton.IsEnabled = false;
ReproduceButton.IsEnabled = false;
// Start recording
var audioRecordTask = await recorder.StartRecording();
RecordButton.Text = "Stop Recording";
RecordButton.IsEnabled = true;
await audioRecordTask;
RecordButton.Text = "Record";
ReproduceButton.IsEnabled = true;
}
else
{
RecordButton.IsEnabled = false;
// stop recording ...
await recorder.StopRecording();
RecordButton.IsEnabled = true;
}
}
catch (Exception ex)
{
await DisplayAlert("Error", ex.Message, "OK");
}
}
public async void Reproduce_Clicked(object sender, EventArgs e)
{
try
{
var filePath = recorder.GetAudioFilePath();
if (filePath != null)
{
ReproduceButton.IsEnabled = false;
RecordButton.IsEnabled = false;
player.Play(filePath);
}
}
catch (Exception ex)
{
await DisplayAlert("Error", ex.Message, "OK");
}
}
public void Finalize_Reproduction(object sender, EventArgs e)
{
ReproduceButton.IsEnabled = true;
RecordButton.IsEnabled = true;
}
}
我一直在关注这个教程:https://julianocustodio.com/2019/04/26/gravar-audio/
当我运行它时,它没有录制和播放音频,我在这里做错了吗? 我是 Xamarin 的新手,我不知道如何处理包。
【问题讨论】:
-
你在哪个平台上尝试这个?
-
我用的是安卓
-
从 GitHub 下载源文件。 github.com/juucustodio/Audio-Recorder-Xamarin.Forms我测试代码。它运作良好。请检查您的许可。您是否在运行时允许了该权限?
-
WOW @WendyZang-MSFT 当我在手机中使用它时,它可以工作,我只使用我的模拟器,无法弄清楚出了什么问题。
-
@WendyZang-MSFT 我怎样才能将它保存到数据库并稍后播放呢?
标签: xamarin xamarin.forms