我缺少啥来阻止 Beep 在我的 Mac 10.5.8 上响起(使用 MonoDevelop 2.8.8.2)?
Posted
技术标签:
【中文标题】我缺少啥来阻止 Beep 在我的 Mac 10.5.8 上响起(使用 MonoDevelop 2.8.8.2)?【英文标题】:What am I missing to stop Beep from sounding on my Mac 10.5.8 ( using MonoDevelop 2.8.8.2)?我缺少什么来阻止 Beep 在我的 Mac 10.5.8 上响起(使用 MonoDevelop 2.8.8.2)? 【发布时间】:2012-12-02 12:59:07 【问题描述】:我正在编写一个跨平台程序,它显示一个计时器,可以向上或向下计数到用户设置的间隔。在那个间隔结束时,我想播放一个声音。我想使用类似的东西:
System.Media.SystemSounds.Beep.Play();
会起作用的。除了在我的 Mac 上没有播放声音之外,我没有任何故障迹象。当我写了一段带有“按钮”的小测试代码来触发“哔”声时,它没有播放。但是,上面的代码 sn-p 在我妻子的 Windows Vista 机器上运行良好(也使用 MonoDevelop 2.8.8.4)。具有讽刺意味的是,它在沙盒化的 Ubuntu 12.04 linux (MonoDevelop 2.8.6.3) 上也能正常工作,我通过 VirtualBox 在我的 Mac 上进行了沙盒化。
我在 SO 和 Internet 上四处查看,但找不到任何令人满意的答案。让我再问一次。 “是什么阻止我的 Mac 在我的 Mac 上播放我的程序中的“哔”声,但同一台 Mac 上的沙盒 linux 播放声音没有问题?”
感谢您对此的任何帮助。
【问题讨论】:
【参考方案1】:查看Mono's implementation of System.Media,它似乎只针对 ALSA(Linux 声音系统之一)和 Windows 实现。我怀疑是因为 System.Media 是一个非常简单的声音 API,不能做很多事情,所以很少使用。
我想不出任何好的平台无关的声音播放器 API,我认为 GTK# UI 工具包(由 MonoDevelop 使用)有一个Display.Beep()
,AFAIK 可以在所有平台上工作。如果你的应用是终端应用,你也可以试试System.Console.Beep ()
。
【讨论】:
谢谢,帮了大忙。我认为这也解释了我在 Mac 上使用 System.Media.SoundPlayer 时遇到的问题!至于与平台无关的声音 API,我可能会追究下去。我也在玩弄用 ALSA 做点什么的想法……我知道这与 linux 内核有关,但也许有一些东西在那里。似乎在 MonoDevelop 下的 Mac 上处理声音缺少某种桥梁。 OpenAL 可能只是作为一个可用于许多平台的 API 来解决问题 connect.creativelabs.com/openal/OpenAL%20Wiki/Platforms.aspx>。干杯 已确认,“Display.Beep()”在我的 Mac 上运行良好,我没有任何理由认为它在我的其他机器上无法运行。 OpenAL 应该可以工作。我相信 OpenTK 中有一个 Mono/.NET OpenAL 包装器。如果你想要 Mac 专用的声音 API,你也可以考虑 MonoMac。 尽我所能帮助它我现在只编写跨平台软件,所以 MonoMac API 不会削减它。以上是关于我缺少啥来阻止 Beep 在我的 Mac 10.5.8 上响起(使用 MonoDevelop 2.8.8.2)?的主要内容,如果未能解决你的问题,请参考以下文章
我缺少啥来启用从自定义适配器到 ListView 的详细信息传输?
在我的 Qt 应用程序中,我可以用啥来代替 sleep 和 usleep?