2010-02-20 25 views
5

Utilizo un applet de Java, que produce sonidos no deseados para mí. Falta la opción de silencio en el applet y no es posible volver a escribir el código fuente. Quiero escuchar otros sonidos de aplicaciones (que no sean de JVM). ¿Cómo suprimo esta salida de sonido del applet de Java (o JVM) sin desactivarla?Silenciar el sonido en Java Applet

Estoy usando Ubuntu 9.10, jre1.6.0_18 y Mozilla FF 3.5.8.

ACTUALIZACIÓN:

  1. applet de Java no se encuentra en "Sound Preferencias-> Aplicaciones", ya que los sonidos son demasiado cortos ("bip", etc.).
  2. Cuando otra aplicación produce sonidos (.mp3, .ogg music), java applet no lo hace.
+1

Esto suena más como una pregunta de configuración de Linux que una pregunta de programación. – Pool

Respuesta

1

probablemente debería estar en el usuario avanzado. Puede usar el audio de impulsos para controlar los sonidos de las aplicaciones (suponiendo que no lo haya deshabilitado) debe estar en las preferencias de sonido. haga clic derecho en el applet de volumen y abra las preferencias, haga clic en la pestaña de la aplicación.

+0

Sí, puedo controlar OTRAS aplicaciones de esa cosa, pero no hay ningún applet Java que produzca sonidos. – INeedUrHelpRly

1

Me pregunto si una política de seguridad local personalizada podrá evitar que el applet acceda al audio? que no la investigó el momento (en Google los términos java applet local policy)

http://www.wutka.com/hackingjava/ch3.htm#CreatingaCustomizedSecurityManager

El applet sería probablemente de salida con una excepción si se produce un error al cargar el archivo de audio o ejecutar el código de audio, pero podría valer la pena Disparo.

Otra página corta http://www.jensign.com/JavaScience/www/policyfiles/

1

Parece que las tiendas de pulso los ajustes de volumen para aplicaciones individuales en una base de datos Trivial (TBD) de archivos en el directorio de inicio: (~/.pulse/(GUID) -stream volúmenes .tdb)

El comando tdbtool del paquete Synaptic "tdb-tools" se puede utilizar para inspeccionar los registros de este archivo, pero no está destinado a ser editado y parece que no es posible (excepto por alguien con intimidad conocimiento del código de pulso) porque todos los valores están en formato hexadecimal y no son fáciles de leer o comprender.

1

Nunca he tenido un problema como el tuyo, pero he eliminado el uso de pulseaudio por completo y nunca he tenido compaints desde entonces. En caso de que desee ir por ese camino, aquí hay instrucciones para reemplazar de manera segura el pulseaudio con alsa.

  1. sudo apt-get purga pulseaudio gstreamer0.10-pulseaudio
  2. sudo apt-get autoremove
  3. sudo apt-get install alsa-base alsa-tools alsa-tools-gui alsa-utils alsa-oss linux-sound-base alsamixergui
  4. sudo apt-get instalar esound esound-clients esound-common libesd-alsa0 gnome-alsamixer
  5. ¡Reinicia tu computadora!
  6. gstreamer-properties ---- establecen ALSA por defecto

Ahora, siempre se puede utilizar para administrar Alsamixergui sonido para todas las aplicaciones.

Espero que resuelva su problema.

3

Si tiene el control de la implementación del applet (es decir, la página web que aloja el applet), puede escribir su propio Applet Launcher. El iniciador funciona como un contenedor que proporciona un entorno personalizado para el applet real. El iniciador crea una instancia del applet real y le pasa versiones personalizadas del entorno de applet (AppletStub, AppletContext). El entorno personalizado implementa AudioClip como una interfaz de "no hacer nada".

Para desactivar el sonido, que podría anular el AppletContext así:

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() { } 
} 

También sobrescribimos AppletStub, ya que es donde el applet obtiene el AppletContext de

class CustomAppletStub implements AppletStub 
{ 
    AppletStub realStub; 

    public AppletContext getAppletContext() 
    { 
     return new CustomAppletContext(realStub.getAppletContext()); 
    } 
} 

Y luego, su lanzador :

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)); 
    } 
} 

Parece un montón de código, pero en realidad es sólo af Nuevas clases y principalmente cableado solo para inyectar una nueva implementación de DummyAudioClip.

HTH!

Cuestiones relacionadas