4

我正在使用 Mono 为 OSX10.6 编写一个简单的计时器应用程序。如何播放警报声音(可能是 wav/mp3 文件或其他文件)?

我尝试了几种方法,不幸的是没有奏效:

  1. Mono似乎还不支持NSSound 。

    MonoMac.AppKit.NSSound alarm = new MonoMac.AppKit.NSSound("alarm.wav");
    alarm.Play();
    
  2. 使用 aSoundPlayer也不起作用:

    System.Media.SoundPlayer player = new System.Media.SoundPlayer("alarm.wav");
    player.PlaySync();
    
  3. System.Diagnostics.Process我可以通过打开 a然后使用 OSX 命令行命令来播放声音afplay。不幸的是,这个命令会在一个新的终端窗口中打开,这在 GUI 应用程序中非常烦人。

我意识到 Mono 中有 CoreAudio 绑定。但是我还没有弄清楚如何使用它们来播放声音。

4

1 回答 1

2

您使用了错误的 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();
}
于 2012-07-22T02:16:20.127 回答