我想在windows 8 metro风格的应用程序中播放mp3文件中的声音.我尝试了两种方法:
方法1:
这是使用/sf/answers/767284101/提供的代码.有用.
方法2:
这里我只是新建一个MediaElement并设置其Source属性如下:
var x = new MediaElement { Source = new Uri("ms-appx:/Assets/MyMp3File.mp3") };
Run Code Online (Sandbox Code Playgroud)
x.Play()但是,当我什么也没发生时.没有例外.
问题:如何使方法2工作?
编辑:想要更新没有MediaFailed, MediaOpened, MediaEnded使用方法2调用任何事件处理程序.
sound = new MediaElement { Source = new Uri("ms-appx:/Assets/Clook.mp3") };
sound.MediaFailed += sound_MediaFailed;
sound.MediaOpened += sound_MediaOpened;
sound.MediaEnded += sound_MediaEnded;
static void sound_MediaEnded(object sender, RoutedEventArgs e)
{
Debugger.Break();
}
static void sound_MediaOpened(object sender, RoutedEventArgs e)
{
Debugger.Break();
}
static void sound_MediaFailed(object sender, ExceptionRoutedEventArgs e)
{
Debugger.Break();
}
Run Code Online (Sandbox Code Playgroud)
有几件事要尝试.请尝试以下代码
var music = new MediaElement()
{
AudioCategory = AudioCategory.ForegroundOnlyMedia,
Source = new Uri(this.BaseUri, "Assets/MyMp3File.mp3")
};
// This is really the only difference, adding it to the visual tree
// LayoutRoot is the root of the visual tree, in the case, a grid in my XAML
LayoutRoot.Children.Add(music);
music.Play();
Run Code Online (Sandbox Code Playgroud)
将其添加到可视化树可能是关键.设置一个断点,以确保您的MediaElement中包含数据.
第二个(实际上发生在我身上,这就是为什么我提到它),我正在开发一个来自// Build的三星设备,它有一个扩展坞.当设备和扬声器位于扩展坞中时,它们将被禁用.您必须直接将耳机插入扩展坞,或将其从扩展坞中取出以听到任何声音.
| 归档时间: |
|
| 查看次数: |
5813 次 |
| 最近记录: |