无法在Windows 8中播放声音

mor*_*eus 4 windows-8

我想在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)

JP *_*oto 6

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

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的三星设备,它有一个扩展坞.当设备和扬声器位于扩展坞中时,它们将被禁用.您必须直接将耳机插入扩展坞,或将其从扩展坞中取出以听到任何声音.