2017-10-06 1 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 (I 성공)의 파일 SQLite 데이터베이스에
  2. 저장 경로.
  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,이 Asset 폴더입니까? c : \ abc.wav에서 파일을 재생하고 싶습니다. 가능합니까? –

0

I 성공의 루트에 wav 파일이 가정! 여기

  1. 가 먼저 SQLite 데이터베이스에 파일 이름을 저장 ApplicationData.Current.LocalFolder
  2. 에 PickSingleFileAsync
  3. 복사 파일이있는 WAV 파일을 선택 단계

    입니다. (전체 경로 포함 안 함)
  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(); 

}