MediaElement.SetSource() 自动播放我的 MP3
MediaElement.SetSource() automatically plays my MP3
我目前正在使用 UWP 在 C# 中开发一个项目。
我需要播放 MP3 文件但不是立即播放,但如果我单击我的应用程序中的按钮。
所以我创建了一个按钮 "load 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 毫秒的延迟才能正常工作。如果我选择很长的延迟(比如这里的 3500 毫秒),歌曲开始播放并在 3.5 秒后停止,很明显。
因为我必须将歌曲开始的时间精确到毫秒才能让我的项目工作,所以延迟方法对我来说并不理想。有谁知道 SetSource()
方法有什么问题吗?
MediaElement
控件有一个 AutoPlay
属性,默认设置为 true
(请参阅 documentation)。这意味着无论何时设置源,它都会在加载源后立即自动开始播放。为避免这种情况,只需将 AutoPlay
属性设置为 false:
mp3.AutoPlay = false;
我目前正在使用 UWP 在 C# 中开发一个项目。 我需要播放 MP3 文件但不是立即播放,但如果我单击我的应用程序中的按钮。 所以我创建了一个按钮 "load 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 毫秒的延迟才能正常工作。如果我选择很长的延迟(比如这里的 3500 毫秒),歌曲开始播放并在 3.5 秒后停止,很明显。
因为我必须将歌曲开始的时间精确到毫秒才能让我的项目工作,所以延迟方法对我来说并不理想。有谁知道 SetSource()
方法有什么问题吗?
MediaElement
控件有一个 AutoPlay
属性,默认设置为 true
(请参阅 documentation)。这意味着无论何时设置源,它都会在加载源后立即自动开始播放。为避免这种情况,只需将 AutoPlay
属性设置为 false:
mp3.AutoPlay = false;