MediaElement Windows Phone 7

时间:2011-03-06 18:10:29

标签: windows-phone-7 mediaelement

我正在创建一个小应用程序,以帮助我更好地了解如何在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,但是当没有断点的调试并点击按钮时我听不到任何内容。 / p>

有没有办法解决这个问题?

6 个答案:

答案 0 :(得分:3)

您是否尝试过将test.mp3的Build Action设置为内容。

在识别手机并完成同步后,您也关闭了zune软件,并使用wp7connect工具进行连接。有关wp7connect工具的更多信息,请尝试here。 zune锁定wp7设备上的所有媒体,你无法播放任何媒体,但媒体的状态将“结束”。 尝试设置媒体的以下活动MediaFailed MediaOpenedMediaEndedDownloadProgressChangedCurrentStateChangedBufferingProgressChanged

答案 1 :(得分:2)

此外,请确保已将功能ID_CAP_MEDIALIB添加到清单(WMAppManifest.xml),这似乎是MediaElement所必需的(否则您将在MediaFailed处理程序中获得AG_E_NETWORK_ERROR)。

答案 2 :(得分:1)

我不推荐多个音频项目的mediaElement ..它有奇怪的效果...使用类似的东西:

Stream stream = TitleContainer.OpenStream(@“Audio / buzzer.wav”);

        SoundEffect effect = SoundEffect.FromStream(stream);
        FrameworkDispatcher.Update();
        effect.Play();

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

答案 3 :(得分:0)

Uri kind必须是RelativeOrAbsolute。

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

答案 4 :(得分:0)

您需要确保已打开MediaElement,然后才能调用它上面的.Play() - 您可以通过向MediaOpened事件添加事件接收器来实现。在重新分配Source属性之前的任何时候调用.Stop()也是一件好事 - 看看this thread for more details

答案 5 :(得分:0)

如果没有Eventhandler,这是无法解决的。如下所述。

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

这完全有效。享受...