Windows Phone 7 Silverlight程式中聲音播放實現

來源:互聯網
上載者:User

在做一個WP7的Silverlight項目時,需要實現使用聲音的播放,我參考了很多開源的項目,發現它們實現這個功能時都引用一個屬於XNA架構的DLL,這一點當初覺得非常奇怪,為此我也就照葫蘆畫瓢實現了。本人還自我良好地認為WP7上的Silverlight架構本身是不具備聲音播放的功能,考慮到避免在XNA和SL上重複地實現兩個聲音播放的庫,WP7的開發人員將聲音的播放介面只封裝在XNA中。後來發現我想當然了。

現在我來先講一下如何在Silverlight程式中使用XNA介面實現聲音的播放,首先我們需要在項目中添加Microsoft.Xna.Framework.dll的引用。

在添加完引用後,接下來在代碼檔案上方使用using添加下面兩個命名空間:

 

using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework;

 

該類只支援WAV檔案,如果你是音效檔是.mp3格式的話,你需要使用一個轉換工具將其轉換為WAV的格式。網路上很多這樣的免費工具,這裡就不多敘了。

 

接下來將WAV音頻檔案添加到項目。我們可以使用TitleContainer.OpenStream()方法將WAV檔案轉換為一個Stream對象。而後在使用前面的Stream對象建立一個SoundEffect對象即可實現聲音的播放了。代碼如下:

 

Stream stream = TitleContainer.OpenStream("sounds/crickets.wav");SoundEffect effect = SoundEffect.FromStream(stream);FrameworkDispatcher.Update();effect.Play();

通常情況下,一個格式為WAV的檔案要比壓縮過的.mp3檔案大的多。其實在WP7的Silverlight架構上是存在一種播放音頻檔案的介面的,這就是MediaElement。一旦你建立好了一個MediaElement對象,請確保該對象已經被添加到Silverlight樹中。如果MediaElement不是靜態聲明的話,mp3檔案將不會被載入。

此外,當你通過VS2010和Zune Software部署套件含MediaElement的程式到真實裝置上時,如果在播放音頻檔案前就沒有斷開手機和Zune Software間的串連,那麼很不幸,應用程式在載入音頻檔案時會報錯。但是在模擬器上運行該程式則一切正常。

下面的代碼將使用MediaElement來示範如何?聲音的播放:

MainPage.xaml:

 

<MediaElement x:Name="MainME" AutoPlay="False" MediaOpened="MainME_MediaOpened" MediaFailed="MainME_MediaFailed"></MediaElement>

 

MainPage.xaml.cs:

 

private void SoundBtn_Click(object sender, RoutedEventArgs e){    MainME.Source = new Uri("sounds/mySound.mp3", UriKind.Relative);    MainME.Position = new TimeSpan(0);}

 

private void MainME_MediaOpened(object sender, RoutedEventArgs e){    MainME.Play();}

 

這裡就不給具體的專案檔下載了,大家可以親自動手驗證下。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.