Windows 8 无法在Windows 8中播放声音

Windows 8 无法在Windows 8中播放声音,windows-8,Windows 8,我想在windows 8 metro风格的应用程序中播放mp3文件中的声音。我尝试了两种方法: 方法一: 这是使用提供的代码。它起作用了 方法二: 在这里,我只是新建了一个MediaElement,并将其Source属性设置为: var x = new MediaElement { Source = new Uri("ms-appx:/Assets/MyMp3File.mp3") }; 但是,当我执行x.Play()时,什么也没有发生。没有抛出异常 问题:我如何使方法2起作用 编辑: 想要

我想在windows 8 metro风格的应用程序中播放mp3文件中的声音。我尝试了两种方法:

方法一:
这是使用提供的代码。它起作用了

方法二:
在这里,我只是新建了一个
MediaElement
,并将其
Source
属性设置为:

var x = new MediaElement { Source = new Uri("ms-appx:/Assets/MyMp3File.mp3") };  
但是,当我执行
x.Play()
时,什么也没有发生。没有抛出异常

问题:我如何使方法2起作用

编辑: 想要更新,使用方法2不会调用任何
mediafiled、mediopened、MediaEnded
事件处理程序

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();
        }

有几件事要尝试。请尝试以下代码

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();
将其添加到可视化树可能是关键。在上面设置一个断点,以确保MediaElement中包含数据


第二,我是在一台三星设备上开发的,该设备来自//Build,有一个扩展底座。当设备位于扩展底座中时,设备上的音频插孔和扬声器将被禁用。您必须将耳机直接插入扩展底座或将其从扩展底座中取出才能听到任何声音。

您必须先将MediaElement放入visualTree中,然后才能播放任何媒体:)

使用
x.autoplay=true
。使用autoplay,它将等待加载。

您是否尝试过:ms-appx://Assets/MyMp3File.mp3 (在uri开头添加双斜杠)?uri格式正确。查看如何侦听MediaFailed事件?我能够在使用它的环境中看到一个错误。