2017-10-06 54 views
0

我打算在桌面上打開一個Wav文件來播放聲音。 這可能在UWP應用程序中嗎?UWP,在桌面上播放聲音文件?

var mediaElement = new MediaElement(); 
     //StorageFolder storageFolder = ApplicationData.Current.LocalFolder; 
     var uri = new System.Uri(filename); 
     var converted = uri.AbsoluteUri; 
     StorageFile storageFolder = await StorageFile.GetFileFromApplicationUriAsync(uri); 
     var file = await storageFolder.TryGetItemAsync(filename) as IStorageFile; 

     if (file != null) 
     { 
      StorageFile soundfile = await storageFolder.GetFileAsync(filename); 
      mediaElement.SetSource(await soundfile.OpenAsync(FileAccessMode.Read), soundfile.ContentType); 
      mediaElement.Play(); 
     } 

這是我的文件名。它是完整的路徑。

D:\develop\visualstudio2\local\sound\sound1.wav 

這是我的要求。

  1. 公開賽filepicker(我的成功)的文件
  2. 保存路徑SQLite數據庫。
  3. 重新啓動應用程序。
  4. 從Sqlite數據庫獲取文件路徑。
  5. 播放聲音。

回答

0

假設你在你的應用程序 「媒體/ test.wav」

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

我想打一個選項,用戶可以聲音文件切換到自己喜歡的。那麼,我無法在安裝的目錄上安裝Wav文件。這是可能的UWP?查看我的更新。 –

+0

看到這個參考它可能會幫助你:https://github.com/Microsoft/Windows-task-snippets/blob/master/tasks/Play-sound-once-or-looped.md –

+0

ms-appx:/// Assets/test.mp3,這是資產文件夾嗎?我想在c:\ abc.wav上播放一個文件,可能嗎? –

0

我成功的根源有一個wav文件!

這裏是一步

  1. 首先選擇一個WAV文件與PickSingleFileAsync
  2. 將文件複製到ApplicationData.Current.LocalFolder
  3. 保存的文件名SQLite數據庫。 (不包括完整路徑)
  4. 播放文件(保存LocalFolder)。

好的,我們走吧。

首先,選擇一個文件。

public async void Click_SettingCommonPathSoundFile1() 
    { 
     var picker = new FileOpenPicker(); 
     picker.ViewMode = PickerViewMode.Thumbnail; 
     picker.SuggestedStartLocation = PickerLocationId.PicturesLibrary; 
     picker.FileTypeFilter.Add(".wav"); 

     StorageFile file = await picker.PickSingleFileAsync(); 
     if (file != null) 
     { 
      // save to the file name to Sqlite at here. 
      await file.CopyAsync(ApplicationData.Current.LocalFolder); 

     } 
    } 

,後來玩。

public async void Click_SettingCommonPathSoundFile1Play() 
    { 
     // get file name from database. 
     await playit("sound1.wav"); 

    } 

和..

private async Task playit(string filename) 
    { 

     var element = new MediaElement(); 
     StorageFolder storageFolder = ApplicationData.Current.LocalFolder; 
     var file = await storageFolder.GetFileAsync(filename); 
     var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read); 
     element.SetSource(stream, ""); 
     element.Play(); 

}