MediaElement.SetSource()自动播放我的MP3

时间:2018-09-25 09:07:17

标签: c# uwp mediaelement

我目前正在使用UWP使用C#进行项目。 我需要立即播放MP3文件,但是如果我单击应用程序中的按钮,则需要立即播放。 因此,我创建了一个“加载MP3”按钮,该按钮运行以下方法: load MP3 method

private async void open_MP3_Click(object sender, RoutedEventArgs e)
    {

        mp3.AudioCategory = Windows.UI.Xaml.Media.AudioCategory.Media;


        var picker = new Windows.Storage.Pickers.FileOpenPicker();
        picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.List;
        picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.ComputerFolder;
        picker.FileTypeFilter.Add(".mp3");

        StorageFile sf = await picker.PickSingleFileAsync();
        var stream = await sf.OpenAsync(FileAccessMode.Read);
        mp3.SetSource(stream, sf.ContentType);
        //await Task.Delay(3500);
        //mp3.Pause();
    }

如果我运行此代码,则选择的歌曲将立即播放,而无需单击我创建的播放按钮。 如果我在mp3.SetSource()行设置了一个断点,该代码将不会立即播放歌曲。我尝试使用mp3.Pause()方法解决该问题,但必须插入350 ms的延迟才能正常工作。如果我选择延迟时间长(例如此处的3500ms),则歌曲会开始播放,并在3.5秒后停止播放。

由于我必须将歌曲的开始恰好计时到毫秒,以便我的项目正常工作,因此延迟方法对我而言并不理想。有没有人知道SetSource()方法有什么问题?

1 个答案:

答案 0 :(得分:2)

MediaElement控件具有一个AutoPlay属性,默认情况下将其设置为true(请参见documentation)。这意味着无论您何时设置源,它都将在加载源后立即自动开始播放。为避免这种情况,只需将AutoPlay属性设置为false:

mp3.AutoPlay = false;