2010-02-20 9 views
5

불필요한 소리가 나는 Java 애플릿을 사용합니다. 애플릿의 음소거 옵션이 누락되어 소스 코드를 다시 쓸 수 없습니다. 다른 (비 JVM) 응용 프로그램의 소리를 듣고 싶습니다. 이 Java 애플릿 (또는 JVM) 사운드 출력을 비활성화하지 않고 어떻게 억제합니까?Java 애플릿의 음소거 소리

저는 우분투 9.10, jre1.6.0_18 및 모질라 FF 3.5.8을 사용하고 있습니다.

UPDATE : 소리가 너무 짧은 때문에

  1. Java 애플릿, "사운드 환경 설정 -> 응용 프로그램"에 없습니다 (등 "삐").
  2. 다른 응용 프로그램에서 사운드 (.mp3, .ogg 음악)를 생성 할 때 Java 애플릿이 생성되지 않습니다.
+1

이것은 프로그래밍 질문보다 Linux 구성 질문과 비슷합니다. – Pool

답변

1

은 고급 사용자 여야합니다. 펄스 오디오를 사용하여 응용 프로그램 사운드를 제어 할 수 있습니다 (비활성화하지 않은 경우) 사운드 기본 설정에 있어야합니다. 볼륨 애플릿을 마우스 오른쪽 단추로 클릭하고 환경 설정을 열고 응용 프로그램 탭을 클릭하십시오.

+0

그래, 그걸로 다른 응용 프로그램을 제어 할 수 있지만 소리를 생성하는 자바 애플릿이 없습니다. – INeedUrHelpRly

1

사용자 정의 로컬 보안 정책이 애플릿이 오디오에 액세스하는 것을 중지시킬 수 있는지 궁금합니다. 내가 지금까지 그것을 조사하지 않았다 는

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

(용어 java applet local policy 봤) 애플릿 것이 실패 할 경우 예외로 아마 종료 오디오 파일을로드하거나 오디오 코드를 실행하지만, 그것은 가치가있을 수도 있습니다 샷.

그것은 그 펄스 매장을 홈 디렉토리의 개별 사소한 데이터베이스 애플리케이션 (TBD) 파일의 볼륨 설정이 나타납니다 http://www.jensign.com/JavaScience/www/policyfiles/

1

또 다른 짧은 페이지 : (~/.pulse/(GUID) 계열 일 - 볼륨을 .tdb)

시냅틱 "tdb-tools"패키지의 tdbtool 명령은이 파일의 기록을 검사하는 데 사용할 수 있지만 편집 할 의도가 없으며 친밀도가있는 사람을 제외하고는 불가능합니다 펄스 코드에 대한 지식) 모든 값이 16 진수 형식이므로 쉽게 읽을 수 없거나 이해할 수 없기 때문입니다.

1

필자와 같은 문제가 발생하지 않았지만 pulseaudio를 완전히 제거했으며 이후로 어떠한 compaints도 가지지 않았습니다. 다음 경로로 이동하려면 pulseaudio를 alsa로 안전하게 바꾸기위한 안내를 따르십시오.

  1. 는 sudo apt-get을 퍼지 펄스 오디오 gstreamer0.10 - 펄스 오디오
  2. 는 sudo는 autoremove
  3. 는 sudo apt-get을 설치 ALSA-기본 ALSA-도구 ALSA-도구 - GUI를 ALSA-utils를 ALSA-OSS를 apt-get을 리눅스 사운드 기반 alsamixergui
  4. 는 sudo apt-get을 설치 esound esound - 클라이언트가 esound-일반적인 libesd-alsa0 그놈 alsamixer
  5. 컴퓨터를 다시 시작합니다!
  6. gstreamer를-특성 ---- 당신은 항상 모든 앱에 대한 사운드를 관리 할 수 ​​alsamixergui 사용할 수 있습니다, 지금

을 기본 ALSA를 설정합니다.

호프가 문제를 해결합니다.

3

애플릿의 배포를 제어하는 ​​경우 (즉, 애플릿을 호스트하는 웹 페이지) 사용자가 직접 애플릿 시작 프로그램을 작성할 수 있습니다. 실행 프로그램은 실제 애플릿에 사용자 정의 환경을 제공하는 랩퍼로 작동합니다. 런처는 실제 애플릿을 인스턴스화하고 애플릿 환경 (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() { } 
} 

이 때문에 애플릿이

class CustomAppletStub implements AppletStub 
{ 
    AppletStub realStub; 

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

그리고, 실행기에서을 AppletContext를 얻을 곳 우리는 또한,의 AppletStub를 오버라이드 (override) :

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

그것은 많은 코드처럼 보이지만 그냥 AF 정말 ew 클래스와 주로 DummyAudioClip 구현을 삽입하기위한 배선을 포함합니다.

HTH!

관련 문제