多年来,已经有很多关于从 Ubuntu 版本中获取哔声的文章。示例:修复蜂鸣声
我的需求略有不同,因为我不想确保声卡蜂鸣声正常工作。相反,我想要 PC 扬声器发出的哔哔声,原始内置扬声器发出的那种哔哔声,因为我相信它们会产生更少的 CPU 负载。我已经通过拔掉外部扬声器并关闭 Ubuntu 来确认我的计算机有 PC 扬声器。在关机和重启过程中的某个时刻,即使外部扬声器没有电,也会听到哔声。
我尝试了以下方法:
在 中/etc/modprobe.d/blacklist.conf,将这些行变成注释:
#blacklist snd_pcsp
#blacklist pcspkr
Run Code Online (Sandbox Code Playgroud)
在 .bashrc
/usr/bin/xset b on
/usr/bin/xset b 100
Run Code Online (Sandbox Code Playgroud)
在 gnome 终端中启用:Edit > Profile Prefs > General > Terminal Bell
确保没有“静音”选项:系统 > 首选项 > 声音 > 各种选项卡(全部取消选中)。
选择“启用窗口和按钮声音”:系统 > 首选项 > 声音 > 声音效果
在gconf-editor桌面 > gnome > 声音中,选中三个声音复选框。
在gconf-editor应用程序 > metacity > 常规中选中audible bell复选框。
当我通过 Java 程序或使用将代码 7 发送到控制台时,仍然没有 PC 扬声器发出哔哔声
echo -e '\a'
Run Code Online (Sandbox Code Playgroud)
或等效地
echo -e "\a"
Run Code Online (Sandbox Code Playgroud)
在 bash 命令行上。(-e 选项意味着启用转义序列解释。)我还应该尝试什么?
更新由于我的目标是最小化 CPU 的负载,这里是经过时间的比较。每个测试进行 100,000 次迭代。每个变体执行 3 次,因此每个变体呈现三个结果。
printwriter.format("%c", 7);
// 1.3 seconds, 1.5 seconds, 1.5 seconds
Toolkit.getDefaultToolkit().beep();
// 0.8 seconds, 0.3 seconds, 0.5 seconds
try { Runtime.getRuntime().exec("beep"); } catch (IOException e) { }
// 10.3 seconds, 16.3 seconds, 11.4 seconds
Run Code Online (Sandbox Code Playgroud)
这些运行是在 Eclipse 内完成的,因此对于独立执行,乘以某个小于 1 的值。不幸的是,Toolkit 的哔哔声在我的计算机上没有声音,代码 7 也是如此。哔声实用程序可以工作,但成本最高。
小智 5
在我的 Oneiric 系统上,我必须执行以下操作才能让 XBell/XkbBell 再次工作:
pcspkr(就像你已经通过/etc/modprobe.d/blacklist.conf)pulseaudio-module-x11(似乎吸收了所有 XBell 事件)options snd-hda-intel beep_mode=2成/etc/modprobe.d/enable-beep.conf(你只需要的话,你拥有了英特尔音效芯片就像我的Latitude E6420的系统)。之后在 alsamixer 中取消扬声器静音。某些终端(如 konsole,请参阅错误Bug 177861)忽略响铃字符。测试系统蜂鸣声的一个好方法是使用xkbbell命令。
在我完成所有这些之后,java 调用Toolkit.getDefaultToolkit().beep()工作得很好。
在 14.04.3 LTS 上,现在似乎足以编辑/etc/modprobe.d/blacklist.conf和启用pcspkr通过注释掉黑名单行
#blacklist pcspkr
Run Code Online (Sandbox Code Playgroud)
将该#行变成注释。
确保终端 (gnome-terminal ) 在首选项选项卡中允许控制台响铃。
这是通过空终端行上的退格键进行测试的。这也通过beep(假设您已经安装了它)。相反,您可以通过 java.awt.Toolkit 对象进行编程蜂鸣:java.awt.Toolkit.getDefaultToolkit().beep()。
Toolkit 对象比beep实用程序更有效。
顺便说一句,有些人不喜欢电脑扬声器。