我正在创建一个小应用程序,以帮助我更好地了解如何在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>
有没有办法解决这个问题?
答案 0 :(得分:3)
您是否尝试过将test.mp3的Build Action设置为内容。
在识别手机并完成同步后,您也关闭了zune软件,并使用wp7connect工具进行连接。有关wp7connect工具的更多信息,请尝试here。
zune锁定wp7设备上的所有媒体,你无法播放任何媒体,但媒体的状态将“结束”。
尝试设置媒体的以下活动MediaFailed
MediaOpened
,MediaEnded
,DownloadProgressChanged
,CurrentStateChanged
和BufferingProgressChanged
答案 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();
}
这完全有效。享受...