2013-11-01 138 views
1

在我的Windows Phone应用程序中,我想播放一个简短的.wav音频,与启动时的窗口类似。起初我尝试使用一个事件处理程序,当我的一个控件被加载时(这个工作大约60%的时间,这是非常有趣的,也许有人可以清除,以及我认为它必须与订单事情发生在负载上,这就是为什么每次都运行它的原因)。我使用视觉工作室2012极致,这是我的.wav文件XAML代码:如何在应用程序启动时播放声音Windows Phone

<MediaElement x:Name="MySound" 
          Source="/quantum_drive.wav" 
          Volume="1" 
          AutoPlay="false" 
          /> 

我也只是试图调用此方法时主要页面加载:

private void MainPage1_Loaded(object sender, RoutedEventArgs e) 
    { 
     MySound.Play(); 
    } 

出于某种原因,这只能在大约60%的时间内(表面上是随机的)工作,为什么?这似乎是想在手机应用程序中做的常见事情,但我无法在计算器或Google搜索上找到任何有关此信息。

回答

0

请勿使用媒体元素来执行您正在尝试执行的操作。这是为了音响效果。这对用户交互媒体意味着更多。

相反,请执行下列操作(you can the full article here

using Microsoft.Xna.Framework.Audio; 

using Microsoft.Xna.Framework.Media; 

using Microsoft.Xna.Framework; 

static Stream stream1 = TitleContainer.OpenStream("soundeffect.wav"); 

static SoundEffect sfx = SoundEffect.FromStream(stream1); 

static SoundEffectInstance soundEffect = sfx.CreateInstance(); 

现在只是从你的加载方法调用播放声音

public void playSound(){ 

    FrameworkDispatcher.Update(); 

    soundEffect.Play(); 

} 
+0

当我添加它说,该命名空间“XNA”不存在的命名空间在微软的命名空间中。这是特定于Windows Phone 8.0吗?我将其构建为一款面向7.1的Windows Phone应用程序。 – slinhart

+0

没有这意味着您需要添加对您的解决方案的参考。 http://msdn.microsoft.com/en-us/library/vstudio/wkze6zky.aspx –

+0

Gotcha。所以我实现了这个代码,现在发生的事情是当我第一次运行应用程序时(模拟器在调试之前关闭,所以它必须加载),它会播放声音;但是,每次我运行后(不关闭模拟器),它只会在一小部分时间播放声音。它实际上似乎与mediaElements具有相同的随机性。为什么是这样?另外,我不得不从代码中删除关键字“static”,编译器正在抱怨这些。 – slinhart

相关问题