MediaElement不播放声音效果

时间:2014-02-02 02:30:06

标签: c# windows-phone-7 windows-phone-8 windows-phone

我希望在用户点击时发出哔声效果。

我有一个beep.mp3文件添加到项目中(不在文件夹中)。在其属性中,我看到Build Action设置为Content

和这个MediaElement:

<MediaElement Name="beep" Source="beep.mp3" Volume="1" AutoPlay="False"/>

然后我听不到任何声音:

beep.Play();

2 个答案:

答案 0 :(得分:0)

在Silverlight项目中有类似的东西。尝试将其添加到Assets文件夹中,设置为Content / Resource并始终复制到输出。

答案 1 :(得分:0)

我构建了一个简单的示例(遵循您的代码),一切都应该没问题。为了确保一切正常,我将执行下面描述的一些检查:
在XAML中:

<Button x:Name="myButton" VerticalAlignment="Cener" Content="BEEP"/>
<MediaElement Name="beep" Source="beep.mp3" Volume="1" AutoPlay="False" MediaFailed="beep_MediaFailed" MediaOpened="beep_MediaOpened"/>

代码背后:

public MainPage()
{
   InitializeComponent();

   myButton.Click += (sender, e) => { beep.Play(); };
   // this below checks if your file exists 
   if (Application.GetResourceStream(new Uri("beep.mp3", UriKind.Relative)) == null)
        MessageBox.Show("File not Exists!");
}

private void beep_MediaFailed(object sender, ExceptionRoutedEventArgs e)
{
   //  Show Message when opening failed 
   MessageBox.Show("There was an error: " + e.ErrorException.Message);
}

private void beep_MediaOpened(object sender, RoutedEventArgs e)
{
   // as it's subscribed in xaml, juts after opening the App you should hear beep
   beep.Play();
   MessageBox.Show("Media opened");
}

首先 - 在构造函数中如果我的beep.mp3存在,我会执行检查(检查我是否可以将其作为资源流获取)。如果一切正常,那么你就不应该看到消息。然后过一会儿你应该看到其中一条消息(失败/打开)。如果打开,那么你也应该听到beep.mp3。
请注意,如果您在InitializeComponent之后放置beep.Play(),那么您可能不会听到它 - 因为媒体必须在播放之前打开(当然通常不需要订阅该事件)如果你不需要,但如果你遇到问题,那么很高兴知道媒体是否被打开了。)

另一方面,我可能会按照WiredPraire建议(在评论中)并使用SoundEffect播放短音。

希望这有点帮助。