2017-10-06 9 views
0

Je suis tring pour ouvrir un fichier Wav sur le bureau pour jouer le son. Est-ce possible dans une application UWP?UWP, Lire le fichier son sur le bureau?

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(); 
     } 

Voici mon nom de fichier. c'est le chemin complet.

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

Voici mes besoins.

  1. Ouvrir un fichier avec filepicker (I succès)
  2. chemin Enregistrer dans la base de données SQLite.
  3. Redémarrez l'application.
  4. obtenir le chemin du fichier à partir de la base de données Sqlite.
  5. jouer le son.

Répondre

0

En supposant que vous avez un fichier wav à la racine de votre application "media/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

Je veux faire une option que l'utilisateur peut changer son fichier à leur favori. alors, je ne peux pas avoir le fichier Wav sur le répertoire installé. Est-ce possible sur UWP? Voir ma mise à jour –

+0

Voir cette référence, il peut vous aider: https://github.com/Microsoft/Windows-task-snippets/blob/master/tasks/Play-sound-once-or-looped.md –

+0

ms-appx: /// Assets/test.mp3, Est-ce ce dossier Asset? Je veux jouer un fichier sur c: \ abc.wav, est-ce possible? –

0

I succès!

Voici l'étape

  1. premier choix d'un fichier wav avec PickSingleFileAsync
  2. Copiez le fichier à ApplicationData.Current.LocalFolder
  3. enregistrer le nom du fichier à la base de données SQLite. (ne pas inclure le chemin d'accès complet)
  4. Lire le fichier (enregistrer LocalFolder).

OK, allons-y.

Tout d'abord, choisissez un fichier.

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); 

     } 
    } 

et de jouer plus tard.

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

    } 

et ..

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(); 

}