2016-05-20 72 views
2

我想在我的uwp應用程序中播放.mp3或wav聲音,只有在應用程序處於打開狀態並且沒有任何媒體元素時才需要播放聲音。是否有可能使某些線程同時播放單獨的歌曲。任何相關的信息表示讚賞。在通用Windows平臺上播放聲音

回答

4

使用MediaElement稍微改編上述答案。假定你有MyFolder/MySound.wav

var element = new MediaElement(); 
var folder = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFolderAsync("MyFolder"); 
var file = await folder.GetFileAsync("MySound.wav"); 
var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read); 
element.SetSource(stream, ""); 
element.Play(); 
+0

它可以同時使用多種聲音嗎?就像Android中的SoundPool一樣 - 只管理同時播放多少聲音,優先級以及是否可以對我的應用程序執行任何內存泄漏?在官方文檔中,我沒有看到有關這方面的任何相關信息。 –

+0

只是看了一下'SoundPool'文檔,'MediaElement'似乎缺少SoundPool的一些優先/多音軌功能。認爲它一次只播放一個音軌,你可能不得不加載多個MediaElements,儘管可能會導致內存命中 – SWilko

+0

是的,無論如何thx –

1

可能是這段代碼會幫助你。

StorageFolder Folder = Windows.ApplicationModel.Package.Current.InstalledLocation; 
Folder = await Folder.GetFolderAsync("MyFolder"); 
StorageFile sf = await Folder.GetFileAsync("MyFile.mp3"); 
PlayMusic.SetSource(await sf.OpenAsync(FileAccessMode.Read), sf.ContentType); 
PlayMusic.Play(); 
+0

在應用程序的根目錄中的媒體文件'PlayMusic'不會在目前的情況下存在,你使用特定的參考? –

+0

PlayMusic = new MediaElement(); –