2013-11-01 156 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

相關問題