2010-10-26 76 views
18

我正在开发基于Windows 7的Silverlight应用程序开发。我一直无法找到一种方法来以编程方式在Windows 7手机中播放音频文件。过去几天我一直在使用Google,但我无法得到任何解决方案。 C#中有一个类SoundPlayer,但我猜它在Windows 7 Phone中不可用。任何人都可以帮忙吗?在Windows 7中播放音频文件电话

回答

14

使用Xna播放声音。您可以从Silverlight应用程序交叉引用XNA不过,用于播放声音文件,则需要以下内容:

using Microsoft.Xna.Framework; 
using Microsoft.Xna.Framework.Audio 
// ... 
Stream stream = TitleContainer.OpenStream("sounds/bonk.wav"); 
SoundEffect effect = SoundEffect.FromStream(stream); 
FrameworkDispatcher.Update(); 
effect.Play(); 

所有最适合您的应用程序的开发!

+0

哇,这是伟大的。非常感谢vamana :) – Aqueel 2010-10-26 07:41:02

+5

事实并非如此,Windows Phone 7的Silverlight支持音频播放。请参阅http://msdn.microsoft.com/en-us/library/system.windows.controls.mediaelement(VS.95).aspx – 2010-10-26 07:57:27

+2

请注意 - 您应该只将SoundEffect用于短片段的声音,而不适用于背景音乐。为此,您应该使用MediaElement – 2010-10-26 08:16:23

19

你可以把一个MediaElement的在您的XAML视图:

<MediaElement 
    x:Name="sound" 
    Source="sound.wma" 
    AutoPlay="False" /> 

然后在后台代码:

sound.Play(); 

支持的格式有MP3和WMA。

+1

这一个没有为我工作,直到我设置AutoPlay =“真正”。不知道为什么。我在xaml中设置了名称和自动播放,并在代码中设置了source和sound.play()(因为我使用它来播放多个声音),并且它在AutoPlay中不起作用,但它适用于它设置为true。谢谢。 – 2011-08-30 13:39:39

+1

-1因为这种方式杀死任何其他的MP3播放+也停止音乐,如果它在设备上播放。这会让你的WP7应用程序无法通过验证,如果你没有明确获得用户的许可来关闭它的音乐。因为这个,我刚刚被拒绝了。目前在WP7平台上使用压缩音频确实没有好方法。在媒体支持方面,WP7肯定相当薄弱。 – Jonny 2011-08-31 17:04:31

3

如何简单地使用内置的行为?

<Button> 
    <i:Interaction.Triggers> 
     <i:EventTrigger EventName="Click"> 
      <eim:PlaySoundAction Source="/Alarm1.wma" Volume="1"/> 
     </i:EventTrigger> 
    </i:Interaction.Triggers> 
</Button> 

您需要这两个命名空间。

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 
xmlns:eim="clr-namespace:Microsoft.Expression.Interactivity.Media;assembly=Microsoft.Expression.Interactions" 
+0

看起来像一个crear解决方案。如果它使用Mediaelement,你会不喜欢? – 2013-06-10 19:42:09