Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows phone 7 MediaElement Windows Phone 7_Windows Phone 7_Mediaelement - Fatal编程技术网

Windows phone 7 MediaElement Windows Phone 7

Windows phone 7 MediaElement Windows Phone 7,windows-phone-7,mediaelement,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.R

我正在创建一个小应用程序,以帮助我更好地了解如何在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();
}

私有无效btn1_单击(对象发送者,路由目标e)
{
注1.Source=newURI(“test.mp3”,UriKind.Relative);
注1.Play();
}
其中test.mp3的构建操作是一个资源

我不明白的是,当我在方法btn1上添加一个断点时,单击并在note1.Play()处停止,它实际上会播放test.mp3,但在没有断点的情况下调试并单击按钮时,我什么也听不到


有没有办法解决此问题?

您是否尝试过将test.mp3的构建操作集作为内容播放

您是否在zune软件识别手机并完成同步和使用wp7connect工具连接后关闭了该软件。有关wp7connect工具的更多信息,请尝试。 zune锁定wp7设备上的所有媒体,您无法播放任何媒体,但媒体状态将为“结束”。
尝试设置媒体的以下事件
MediaFailed
MediaOpened
MediaEnded
DownloadProgressChanged
CurrentStateChanged
BufferingProgressChanged
。此外,请确保您已将功能ID\u CAP\u MEDIALIB添加到清单(WMAppManifest.xml)中,这似乎是MediaElement所必需的(否则您将在MediaFailed处理程序中获得AG_E_NETWORK_错误)。

Uri种类必须是RelativeOrAbsolute

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

在调用.Play()之前,您需要确保MediaElement已被打开-您可以通过向MediaOpen事件添加事件接收器来完成此操作。在重新分配源属性之前,随时调用.Stop()也很好,请看一下。

我不建议mediaElement用于多个音频项目。它有奇怪的效果…使用类似以下内容:

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


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

如果没有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();
    }

私有无效btn1_单击(对象发送者,路由目标e)
{
注1.Source=newURI(“test.mp3”,UriKind.Relative);
note1.MediaOpened+=新路由EventHandler(note1_MediaOpened);
}
void note1_media已打开(对象发送方,路由目标)
{
注1.Play();
}

这是完美的作品。享受…

我可以按照你描述的方式播放MP3。点击按钮后还有其他动作吗?我想问题是我的声音只有1秒长,我相信MediaElement不喜欢这样。我改用了SoundEffect。这是正确的答案。如果Windows phone market place暂停音乐播放器播放音乐,它将拒绝您的应用。再加上buggy mediaelement,这几乎是不可能的
 <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();
    }