录制的音频未在xamarin中播放
我想使用xamarin表单录制音频: 我的xaml中有以下代码:录制的音频未在xamarin中播放,xamarin,xamarin.forms,Xamarin,Xamarin.forms,我想使用xamarin表单录制音频: 我的xaml中有以下代码: <StackLayout Spacing="15"> <StackLayout Orientation="Horizontal"> <Switch x:Name="TimeoutSwitch" IsToggled="True" /> <Label Text="Stop aft
<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>
我一直在学习本教程:
当我运行它时,它没有录制和播放音频,我在这里做错了什么吗?
我是Xamarin的新手,不知道如何使用软件包。根据我的测试,不需要保存。默认情况下会保存音频。 当你玩它时,你可以先得到路径,然后再玩它 获取路径:
var filePath = gravador.GetAudioFilePath();
播放:
reprodutor.Play(filePath);
地点:
/data/user/0/br.com.julianocustodo.audiodemo/cache/ARS_recording.wav
如果您想自己保存它,可以使用GetAudioFileStream
获取流,然后将其保存到您自己的数据库中,或者只获取路径,然后播放它
更新:
var stream = gravador.GetAudioFileStream();
string fileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "sample.wav");
using (var fileStream = new FileStream(fileName, FileMode.Create, FileAccess.Write))
{
stream.CopyTo(fileStream);
}
reprodutor.Play(fileName);
我对单击的Reproduzir\u
事件的代码进行了一些更改。我提供的代码用我自己的名字保存录制的音频sample.wav
。我播放它来检查它是否存在。它工作得很好
更新:
var stream = gravador.GetAudioFileStream();
string fileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "sample.wav");
using (var fileStream = new FileStream(fileName, FileMode.Create, FileAccess.Write))
{
stream.CopyTo(fileStream);
}
reprodutor.Play(fileName);
创建新页面Page1
,将文件名从主页传递到第1页。代码仍然基于GitHub上的录音机
录音机
:
MainPage.xaml
<StackLayout Spacing="15">
<StackLayout Orientation="Horizontal">
<Switch x:Name="TimeoutSwitch" IsToggled="True" />
<Label Text="Parar após silêncio?" />
</StackLayout>
<Button x:Name="GravarButton" Text="Gravar" HorizontalOptions="FillAndExpand" Clicked="Gravar_Clicked" />
<Button x:Name="ReproduzirButton" Text="Reproduzir" HorizontalOptions="FillAndExpand" Clicked="Reproduzir_Clicked" IsEnabled="False" />
<Button x:Name="btnGoToPage1" Text="GoToPage1" Clicked="btnGoToPage1_Clicked"></Button>
</StackLayout>
第1.xaml页
<StackLayout>
<Label Text="Welcome to Page1!"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand" />
<Button x:Name="btnPlay" Text="Play" Clicked="btnPlay_Clicked"></Button>
</StackLayout>
在我这方面效果很好,试试看。你在哪个平台上尝试这个?我正在使用Android从GitHub下载源文件。我测试代码。它工作得很好。请检查您的许可。你在运行时允许权限了吗?哇@WendyZang MSFT当我在手机中使用它时,它工作正常,我只使用了模拟器,无法找出问题所在。@WendyZang MSFT我如何将它保存到数据库中,稍后再播放?我想录制音频,然后将其保存到数据库中,稍后再播放。这也是令人困惑的,因为我希望我录制的音频被标记。所有录制的音频文件扩展名都是.wav?是的,这是Plugin.AudioRecorder提供的默认方式。但是我可以重命名录制的音频吗?而不是ARS_recording.wav可能类似于Textbox.text()+.wav?因此,每次我保存音频时,它都会有一个唯一的名称。您可以使用GetAudioFileStream
中的流捕获,用自己的名称保存录制的音频。
<StackLayout>
<Label Text="Welcome to Page1!"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand" />
<Button x:Name="btnPlay" Text="Play" Clicked="btnPlay_Clicked"></Button>
</StackLayout>
public partial class Page1 : ContentPage
{
public Page1()
{
InitializeComponent();
}
AudioPlayer reprodutor;
private void btnPlay_Clicked(object sender, EventArgs e)
{
var fileName = new MainPage().fileName;
reprodutor = new AudioPlayer();
reprodutor.Play(fileName);
}
}