我使用的是一个Java小程序,它会向我发出不需要的声音。 applet中的静音选项丢失,无法重写源代码。 我想听听其他(非JVM)应用程序的声音。 如何在不禁用它的情况下抑制此Java小程序(或JVM)声音输出?
我正在使用Ubuntu 9.10,jre1.6.0_18和Mozilla FF 3.5.8。
更新:
答案 0 :(得分:3)
如果您控制applet的部署(即托管applet的网页),您可以编写自己的Applet Launcher。启动器用作包装器,为实际的applet提供自定义环境。启动器实例化真实的applet并传递给applet环境的自定义版本(AppletStub,AppletContext。)自定义环境将AudioClip实现为“无所事事”界面。
要禁用音频,您可以覆盖AppletContext,如下所示:
class CustomAppletContext implements AppletContext
{
AppletContext realContext;
// most methods delegate to the real context, either directly, or with a little modification to hide the fact that we are using this launcher
public void setStatus(String status)
{
realContext.setStatus(status);
}
// override the getAudioClip to return a dummy clip
public AudioClip getAudioClip(URl url)
{
return new DummyAudioClip();
}
}
// An AudioClip implementation that does nothing
class DummyAudioClip implements AudioClip
{
public void loop() { }
public void play() { }
public void stop() { }
}
我们还覆盖了AppletStub,因为这是Applet从
获取AppletContext的地方class CustomAppletStub implements AppletStub
{
AppletStub realStub;
public AppletContext getAppletContext()
{
return new CustomAppletContext(realStub.getAppletContext());
}
}
然后,你的发射器:
class AppletLauncher extends Applet
{
private Applet realApplet = new NoisyApplet();
// delegate most methods to the applet, but override the stub, to inject our
// AppletContext and AudioClip implementation
public void setAppletStub(AppletStub stub)
{
realApplet.setAppletStub(new CustomAppletStub(stub));
}
}
它看起来像很多代码,但它实际上只是几个类,并且主要用于注入新的DummyAudioClip实现。
HTH!
答案 1 :(得分:1)
可能应该是超级用户。 您可以使用脉冲音频来控制应用程序声音(假设您没有禁用它) 它应该是合理的偏好。 右键单击卷小程序并打开首选项单击应用程序选项卡。
答案 2 :(得分:1)
我想知道自定义本地安全策略是否能够阻止applet访问音频?
我没有调查它(用Google搜索术语java applet local policy
)
http://www.wutka.com/hackingjava/ch3.htm#CreatingaCustomizedSecurityManager
如果加载音频文件或运行音频代码失败,applet可能会以异常退出,但它可能值得一试。
答案 3 :(得分:1)
Pulse似乎将各个应用程序的音量设置存储在主目录中的普通数据库(tbd)文件中:(〜/ .pulse /(guid)-stream-volumes.tdb)
来自Synaptic“tdb-tools”软件包的tdbtool命令可以用来检查这个文件的记录,但它不是要编辑的,似乎是不可能的(除了那些对脉冲有深入了解的人)代码)因为所有值都是十六进制格式,不易读取或理解。
答案 4 :(得分:1)
我从来没有遇到像你这样的问题,但是我完全删除了pulseaudio,从那时起就没有任何补偿。如果您想沿着这条路走下去,这里有一些安全地用alsa替换pulseaudio的说明。
现在,您可以随时使用alsamixergui来管理所有应用的声音。
希望能解决你的问题。