我正在使用 Mono 为 OSX10.6 编写一个简单的计时器应用程序。如何播放闹钟声音(可能是 wav/mp3 文件或其他文件)?
我尝试了几种方法,不幸的是没有一个有效:
NSSound Mono 似乎还不支持。
MonoMac.AppKit.NSSound alarm = new MonoMac.AppKit.NSSound("alarm.wav"); alarm.Play();
使用
SoundPlayer
也不起作用:System.Media.SoundPlayer player = new System.Media.SoundPlayer("alarm.wav"); player.PlaySync();
我可以通过打开
System.Diagnostics.Process
来播放声音,然后使用 OSX 命令行命令afplay
。不幸的是,此命令会在一个新的终端窗口中打开,这在 GUI 应用程序中非常烦人。
我意识到 Mono 中有 CoreAudio 绑定(bind)。但是我还没有弄清楚如何使用它们来播放声音。
最佳答案
你使用了错误的 NSSound 构造函数。
new MonoMac.AppKit.NSSound("alarm.wav")
需要一个 NSData
(从 string
隐式转换),你想使用 new NSSound(string, bool)
.可能想为第二个参数传递 false
。
我拼凑了一个快速测试项目(基于默认的 MonoMac 项目)来确认它是否有效:
public override void FinishedLaunching (NSObject notification)
{
mainWindowController = new MainWindowController ();
mainWindowController.Window.MakeKeyAndOrderFront (this);
// Only lines added
var sound = new NSSound("/Users/kevinmontrose/Desktop/bear_growl_y.wav", byRef: false);
sound.Play();
}
关于c# - 在 OSX 上使用 MONO 播放声音的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11593794/