C# 使用媒体元素在隔离存储中播放wav文件

C# 使用媒体元素在隔离存储中播放wav文件,c#,windows-phone-8,isolatedstorage,mediaelement,C#,Windows Phone 8,Isolatedstorage,Mediaelement,我创建了一个小应用程序来录制和播放语音,用这个代码来制作一个录制按钮和一个播放按钮 我测试了应用程序,录音机工作正常我使用Windows phone power tools从WP emulator的独立存储中获取tempaudo.wav,可以播放此音频文件,但播放按钮无法播放声音,我找不到btPlay按钮有任何问题: XAML代码这两个按钮是来自coding4fun工具包的roundtoggle按钮和round按钮 <StackPanel Orientation="Horizontal"&

我创建了一个小应用程序来录制和播放语音,用这个代码来制作一个录制按钮和一个播放按钮

我测试了应用程序,录音机工作正常我使用Windows phone power tools从WP emulator的独立存储中获取tempaudo.wav,可以播放此音频文件,但播放按钮无法播放声音,我找不到btPlay按钮有任何问题:

XAML代码这两个按钮是来自coding4fun工具包的roundtoggle按钮和round按钮

<StackPanel Orientation="Horizontal">
    <toolkit1:RoundToggleButton x:Name="btRecorder" IconUri="..." Checked="btRecorder_Checked" checked="btRecorder_Unchecked"/> 
    <MediaElement x:Name="meVoicePlayer" AutoPlay="False"/>
    <toolkit1:RoundButton x:Name="btPlay" Click="PlayAudio_Click" IconUri="..."/>
</StackPanel>

您提到的是模拟器。这是唯一一个你的音频不能播放的地方吗?在这种情况下,答案很简单:MediaElement不支持模拟器内的播放。请参阅平台说明:Silverlight for Windows Phone on

您必须使用Emulator 8.0 Update 3 WVGA 512MB。它很好用

真奇怪!我在meVoicePlayer线上设置了一个断点;然后开始,音频播放删除该断点并重新开始,音频不会播放,再次@真的很困惑@这是因为流音频在您退出使用范围{}后被释放。按StopLay时,请使用{}删除并释放流。我尝试手动使用并使用isf.dispose删除,但问题仍然存在
MicrophoneRecorder recorder = new MicrophoneRecorder();

private void btRecorder_Checked(object sender, RoutedEventArgs e)
    {
        recorder.Start();                       
    }

private void btRecorder_Unchecked(object sender, RoutedEventArgs e)
    {
        recorder.Stop();
        SaveTempAudio(recorder.Buffer);
    }

public void SaveTempAudio(MemoryStream buffer)
    {
        using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
        {
            var bytes = buffer.GetWavAsByteArray(recorder.SampleRate);                
            using (IsolatedStorageFileStream audio = new IsolatedStorageFileStream("TempAudio.wav",FileMode.Create,isf))
            {
                audio.Write(bytes, 0, bytes.Length);
            }
        }
    }

private void PlayAudio_Click(object sender, RoutedEventArgs e)
    {
    using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
        {                
            using (IsolatedStorageFileStream audio = new IsolatedStorageFileStream("TempAudio.wav",FileMode.Open,isf))
            {
                meVoicePlayer.Stop();
                meVoicePlayer.SetSource(audio);
                meVoicePlayer.Position = new TimeSpan(0, 0, 0, 0);
                meVoicePlayer.Play();
            }
        } 
    }