【问题标题】:UWP , Play sound file on Desktop?UWP,在桌面上播放声音文件?
【发布时间】:2018-03-17 22:40:33
【问题描述】:

我想在桌面上打开一个 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

这是我的要求。

  1. 用文件选择器打开一个文件(我成功)
  2. 保存到 Sqlite 数据库的路径。
  3. 重新启动应用程序。
  4. 从 Sqlite 数据库中获取文件路径。
  5. 播放声音。

【问题讨论】:

    标签: uwp mediaelement


    【解决方案1】:

    假设您在应用程序“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();
    

    【讨论】:

    • 我想设置一个选项,用户可以将声音文件切换到他们喜欢的文件。然后,我不能在安装目录上拥有 Wav 文件。这可能在 UWP 上吗?查看我的更新。
    • 看这个参考它可能对你有帮助:github.com/Microsoft/Windows-task-snippets/blob/master/tasks/…
    • ms-appx:///Assets/test.mp3,这是资产文件夹吗?我想在 c:\abc.wav 上播放一个文件,可以吗?
    【解决方案2】:

    我成功了!

    这是步骤

    1. 首先使用 PickSingleFileAsync 选择一个 wav 文件
    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();
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-12
      • 2011-02-04
      • 1970-01-01
      • 1970-01-01
      • 2016-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多