2016-03-16 38 views
0

我試圖播放一個聲音文件,當我點擊一個按鈕。該文件位於資產文件夾中,構建操作被設置爲內容。我試過如下:MediaElement的來源

選項1:

element.Source = new Uri("ms-appx:///Assets/alarm.wav"); 

選項2:

Windows.Storage.StorageFolder folder = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFolderAsync("Assets"); 
Windows.Storage.StorageFile file = await folder.GetFileAsync("alarm.wav"); 
var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read); 
element.SetSource(stream, file.ContentType); 

第二個選項的作品,但是當我點擊按鈕,它需要很長的時間播放聲音之前。根據其他問題,第一個選項應該可以工作,但聲音不會播放,也沒有例外。

有什麼建議嗎?

編輯:

我正在使用Xamarin模板進行跨平臺開發。所以,我有以下結構:

  • 應用程序(PCL)
  • App.Droid
  • App.iOS
  • App.UWP
  • App.WinPhone

隨着DependencyService我嘗試在每個平臺上播放聲音,但使用App.UWP選項1不起作用。

+0

我的.wav媒體文件和按鈕單擊事件測試的選項1,它在我身邊工作正常。 –

+0

我在項目中添加了項目結構。我用於URI的路徑/方案是否不正確? – Nfear

+0

我不熟悉Xamarin,但選項2中的路徑與我在視圖中的選項1中的路徑相同。你確定你的文件在App.UWP項目的Assets文件夾中嗎? –

回答

0

你可以試試這個方法

Uri uri = new Uri(AppDomain.CurrentDomain.BaseDirectory + "Assets/alarm.wav"); 
       var player = new MediaPlayer(); 
       player.Open(uri); 
       player.Play(); 
+0

找不到AppDomain。我需要什麼參考? – Nfear

+0

它將在系統命名空間 – Akansha

+0

我有'使用系統',但它仍然無法找到。根據[這](http://stackoverflow.com/questions/31987252/how-to-get-assembly-from-a-type-object-in-uwp-aka-net-core)的問題,這是不可能的UWP,因爲它使用.NETCore – Nfear