加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows-8 – 无法在Windows 8中播放声音

发布时间:2020-12-14 02:04:39 所属栏目:Windows 来源:网络整理
导读:我想在 windows 8 metro风格的应用程序中播放mp3文件中的声音.我尝试了两种方法: 方法一: 这是使用https://stackoverflow.com/a/10961201/147530提供的代码.它的工作原理. 方法2: 在这里,我只是新建一个MediaElement并设置它的Source属性,如下所示: var
我想在 windows 8 metro风格的应用程序中播放mp3文件中的声音.我尝试了两种方法:

方法一:
这是使用https://stackoverflow.com/a/10961201/147530提供的代码.它的工作原理.

方法2:
在这里,我只是新建一个MediaElement并设置它的Source属性,如下所示:

var x = new MediaElement { Source = new Uri("ms-appx:/Assets/MyMp3File.mp3") };

当我做x.Play()时,没有任何事情发生.没有例外.

问题:如何使方法2工作?

编辑:
想要更新没有使用方法2调用MediaFailed,MediaOpened,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的三星设备,它有一个扩展坞.当设备和扬声器位于扩展坞中时,它们将被禁用.您必须直接将耳机插入扩展坞,或将其从扩展坞中取出以听到任何声音.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读