我正在使用MediaElement类并尝试播放我在解决方案资源管理器中添加的音频文件(.mp3)(参见下图)。
我在构造函数
中使用以下代码// Constructor
public MainPage()
{
InitializeComponent();
// Set the data context of the listbox control to the sample data
DataContext = App.ViewModel;
MediaElement el = new MediaElement();
el.Source = new Uri("horse.mp3", UriKind.RelativeOrAbsolute);
el.Play();
}
我还在下面添加了一个截图,只是为了了解horse.mp3文件所在的位置。
请帮我解决这个问题。
答案 0 :(得分:2)
MP3文件的构建操作是什么?对于您使用的URI格式,它应该是Build Action = Content。
此外,您实际上并没有将MediaElement添加到您的页面。 MediaElement是一个可视控件,需要成为可视tre的一部分才能运行。如果你想在WP7 / WP8上做短音效,你应该使用XNA的SoundEffect。您必须非常专门地预先格式化您的音频轨道,但您将获得与用户当前正在播放的音频重叠的好处,而无需将其添加到可视树中。
答案 1 :(得分:0)
:
<Button x:Name="PlayFile"
Click="PlayFile_Click_1"
Content="Play mp3" />
并在代码中:
MediaElement MyMedia = new MediaElement();
// Constructor
public MainPage()
{
InitializeComponent();
this.LayoutRoot.Children.Add(MyMedia);
MyMedia.CurrentStateChanged += MyMedia_CurrentStateChanged;
MyMedia.MediaEnded += MyMedia_MediaEnded;
}
void MyMedia_MediaEnded(object sender, RoutedEventArgs e)
{
System.Diagnostics.Debug.WriteLine("Ended event " + MyMedia.CurrentState.ToString());
// Set the source to null, force a Close event in current state
MyMedia.Source = null;
}
void MyMedia_CurrentStateChanged(object sender, RoutedEventArgs e)
{
switch (MyMedia.CurrentState)
{
case System.Windows.Media.MediaElementState.AcquiringLicense:
break;
case System.Windows.Media.MediaElementState.Buffering:
break;
case System.Windows.Media.MediaElementState.Closed:
break;
case System.Windows.Media.MediaElementState.Individualizing:
break;
case System.Windows.Media.MediaElementState.Opening:
break;
case System.Windows.Media.MediaElementState.Paused:
break;
case System.Windows.Media.MediaElementState.Playing:
break;
case System.Windows.Media.MediaElementState.Stopped:
break;
default:
break;
}
System.Diagnostics.Debug.WriteLine("CurrentState event " + MyMedia.CurrentState.ToString());
}
private void PlayFile_Click_1(object sender, RoutedEventArgs e)
{
// Play Awesome music file, stored as content in the Assets folder in your app
MyMedia.Source = new Uri("Assets/AwesomeMusic.mp3", UriKind.RelativeOrAbsolute);
MyMedia.Play();
}
答案 2 :(得分:0)
您必须添加
el.AutoPlay=true
希望得到这个帮助。