Java小程序中的静音
我使用一个Java小程序,它会产生我不想要的声音。 小程序中的静音选项丢失,无法重写源代码。 我想听听其他(非JVM)应用程序的声音。 如何在不禁用的情况下抑制此Java小程序(或JVM)声音输出 我使用的是Ubuntu 9.10、jre1.6.0_18和Mozilla FF 3.5.8 更新:Java小程序中的静音,java,ubuntu,applet,audio,mute,Java,Ubuntu,Applet,Audio,Mute,我使用一个Java小程序,它会产生我不想要的声音。 小程序中的静音选项丢失,无法重写源代码。 我想听听其他(非JVM)应用程序的声音。 如何在不禁用的情况下抑制此Java小程序(或JVM)声音输出 我使用的是Ubuntu 9.10、jre1.6.0_18和Mozilla FF 3.5.8 更新: “声音首选项->应用程序”中缺少Java小程序,因为声音太短(“哔”声等) 当其他应用程序产生声音(.mp3、.ogg音乐)时,java小程序不会 可能应该是超级用户。 您可以使用脉冲音频来控制应用程序
可能应该是超级用户。 您可以使用脉冲音频来控制应用程序的声音(假设您没有禁用它) 它应该在声音偏好中。
右键单击音量小程序并打开首选项,单击应用程序选项卡。我想知道自定义本地安全策略是否能够阻止小程序访问音频? 我没有深入调查(谷歌搜索术语
javaapplet本地策略
)
如果加载音频文件或运行音频代码失败,小程序可能会异常退出,但值得一试
另一个短页
Pulse似乎将单个应用程序的卷设置存储在主目录中的普通数据库(tbd)文件中:(~/.Pulse/(guid)-stream volumes.tdb)
Synaptic“tdb tools”软件包中的tdbtool命令可用于检查此文件的记录,但该命令不可编辑,且似乎不可能执行(熟悉脉冲代码的人员除外)因为所有的值都是十六进制格式,不容易阅读或理解。我从未遇到过像您这样的问题,但我完全删除了pulseaudio,从此再也没有任何Compaint。如果您想沿着这条路走下去,以下是使用alsa安全替换pulseaudio的说明
希望这能解决您的问题。如果您控制小程序的部署(即托管小程序的网页),您可以编写自己的小程序启动器。启动器作为包装器,为实际的小程序提供自定义环境。启动器实例化真实的小程序,并将小程序环境的自定义版本(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实现
嗯 是的,我可以用它来控制另一个应用程序,但是没有java小程序可以发出声音。这听起来更像是一个Linux配置问题,而不是一个编程问题。