首页 文章

UWP,在桌面上播放声音文件?

提问于
浏览
0

我想在桌面上打开一个Wav文件来播放声音 . 这在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

这是我的要求 .

  • 用filepicker打开文件(我成功)

  • 保存Sqlite数据库的路径 .

  • 重启应用程序 .

  • 从Sqlite数据库获取文件路径 .

  • 播放声音 .

2 回答

  • 0

    假设你的应用程序“media / test.wav”的根目录下有一个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

    我成功了!

    这是一步

    • 首先用PickSingleFileAsync选择一个wav文件

    • 将文件复制到ApplicationData.Current.LocalFolder

    • 将文件名保存到Sqlite数据库 . (不包括完整路径)

    • 播放文件(保存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();
    

    }

相关问题