MediaElement Windows Phone 7

3
我正在创建一个小应用程序,以帮助我更好地了解如何在WP7设备上播放声音,但是我遇到了一个问题,就是实际上无法从设备中获得声音。
我有以下代码:
<MediaElement x:Name="note1" Source="test.mp3" AutoPlay="False" />

private void btn1_Click(object sender, RoutedEventArgs e)
{
    note1.Source = new Uri("test.mp3", UriKind.Relative);
    note1.Play();
}

如果test.mp3的“Build Action”是资源,那么我不理解的是,当我在btn1_Click方法上添加断点并停在note1.Play()处时,它实际上播放了test.mp3,但是当我没有断点调试并单击按钮时,我听不到任何声音。

有什么方法可以解决这个问题吗?


我按照您的描述播放MP3没有问题。在按钮点击后你还有其他的动作吗? - Den
我认为问题在于我的声音只有1秒钟长,而且我相信MediaElement不喜欢这样。我改用了SoundEffect。 - Michael
6个回答

3
你是否尝试将test.mp3的Build Action设置为内容(content)进行播放?
另外,你是否在zune软件识别手机并完成同步后关闭了它,并使用wp7connect工具进行连接?想要了解有关wp7connect工具的更多信息,请尝试这里
zune锁定了wp7设备上的所有媒体,因此您无法播放任何媒体,但媒体的状态将为“已结束”。请尝试设置媒体的以下事件:MediaFailedMediaOpenedMediaEndedDownloadProgressChangedCurrentStateChangedBufferingProgressChanged

2
此外,请确保在您的清单文件(WMAppManifest.xml)中添加了ID_CAP_MEDIALIB功能,这似乎是MediaElement所必需的(否则在MediaFailed处理程序中会出现AG_E_NETWORK_ERROR)。

1
我不建议使用mediaElement来处理多个音频项目,因为它会产生奇怪的效果。你可以使用以下代码代替:
Stream stream = TitleContainer.OpenStream(@"Audio/buzzer.wav");
        SoundEffect effect = SoundEffect.FromStream(stream);
        FrameworkDispatcher.Update();
        effect.Play();

使用XNA框架...并确保有WAV文件。

这是正确的答案。如果您的应用程序暂停音乐播放器播放音乐,Windows手机市场将拒绝它。再加上有缺陷的MediaElement,几乎是不可能的。 - Clinton Ward

0

Uri 类型必须是 RelativeOrAbsolute。

private void btn1_Click(object sender, RoutedEventArgs e)
{
    note1.Source = new Uri("test.mp3", UriKind.RelativeOrAbsolute);
    note1.Play();
}

0

这个问题没有事件处理程序是无法解决的。请按照以下步骤操作。

 <MediaElement x:Name="note1" Source="test.mp3" AutoPlay="False" />

 private void btn1_Click(object sender, RoutedEventArgs e)
 {
   note1.Source = new Uri("test.mp3", UriKind.Relative);
   note1.MediaOpened += new RoutedEventHandler(note1_MediaOpened);
 }

  void note1_MediaOpened(object sender, RoutedEventArgs e)
    {
        note1.Play();
    }

这个完美地运作。享受...


0

在调用 .Play() 方法之前,您需要确保 MediaElement 已经被打开 - 您可以通过在 MediaOpened 事件中添加事件接收器来实现。在重新分配 Source 属性之前随时调用 .Stop() 也是一个好习惯 - 可以查看此帖子获取更多细节


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接