2012-05-16 25 views
5

Şu anda bilgisayarımın ana ses düzeyini kontrol etmek için Java numaralı telefondan JSlider kullanmaya çalışıyorum. Şimdiye kadar bilgisayarımın ana konuşmacısının portunu bulabildim. Ancak, başarılı bir şekilde nasıl çağırılacağını ve getValue() veya setValue() gibi bir yöntemi nasıl çalıştıracağımı bilmiyorum.Bilgisayarımın ana çıkışının kontrolünü alma konusunda yardıma ihtiyacım var Hoparlör

Mixer.Info [] mixers = AudioSystem.getMixerInfo(); 
    System.out.println("There are " + mixers.length + " mixer info objects"); 
    for (Mixer.Info mixerInfo : mixers) 
    { 
     System.out.println("mixer name: " + mixerInfo.getName()); 
     Mixer mixer = AudioSystem.getMixer(mixerInfo); 
     Line.Info [] lineInfos = mixer.getTargetLineInfo(); // target, not source 
     for (Line.Info lineInfo : lineInfos) 
     { 
      System.out.println(" Line.Info: " + lineInfo); 
      Line line = null; 
      boolean opened = true; 
      try 
      { 
       line = mixer.getLine(lineInfo); 
       opened = line.isOpen() || line instanceof Clip; 
       if (!opened) 
       { 
        line.open(); 
       } 
       FloatControl volCtrl = (FloatControl)line.getControl(FloatControl.Type.VOLUME); 
       System.out.println(" volCtrl.getValue() = " + volCtrl.getValue()); 
      } 
      catch (LineUnavailableException e) 
      { 
       e.printStackTrace(); 
     } 
      catch (IllegalArgumentException iaEx) 
      { 
       System.out.println(" " + iaEx); 
      } 
      finally 
      { 
       if (line != null && !opened) 
       { 
        line.close(); 
       } 
      } 
     } 
    } 

nasıl hoparlörler hattının kontrolünü almak ve değer değiştirmek yapın:

Her şeyi benim PC aramak için aşağıdaki kodu kullanmış ses cihazlarını var?

Şu ana kadar yardım için this web sitesini kullanıyorum.


GÜNCELLEME ben biraz daha yakın geldiğimizi düşünüyorum böylece

tamam. Test GUI programımın altında Java öğreticisinin kodunu "İstediğiniz Denetimleri Olan Bir Hat Almak" (bana verdiğiniz bağlantı) altından kullanmaya çalışıyorum. JSlider'in Change Listener'ım altındaki programıma yapıştırdım. Göründüğü gibi ne

: Ben hata İstisna iletisi basar kaydırıcıyı zaman

Port SPEAKER; 
     FloatControl volCtrl; 
     try { 
      Mixer mixer = AudioSystem.getMixer(null); 
      SPEAKER = (Port)mixer.getLine(Port.Info.SPEAKER); 
      SPEAKER.open(); 
      volCtrl = (FloatControl) SPEAKER.getControl(

      FloatControl.Type.VOLUME); 

     } catch (Exception e) { 
     System.out.println("Failed trying to find LINE_IN" 
      + " VOLUME control: exception = " + e); 
     } 

"bulmaya çalışırken Başarısız ...". Neden ana çıkış hoparlörlerimde volCtrl elde etmeme izin vermiyor? SPEAKER'imin kontrolünü almak için bu kodu nasıl düzeltebilirim?

cevap

0

JavaRanch'da harika bulabilirsiniz! Orada çok değerli yardım aldım. http://docs.oracle.com/javase/tutorial/sound/controls.html

Ama bazen yüksek ve düşük vals beklenmedik şunlardır: Eğer çizgiler bulduğunuzda

, bu öğretici bir Kontrolü nasıl yapılacağını göstermektedir. -80 ila +6 arasında değişen bir çizgi buldum (bir VU ölçüsünün desibel aralığını taklit etmek üzere ayarlandı). Bu nedenle, özellikle Kontrol üstelsel ise, makul bir eşleşen Kontrol değeri elde etmek için JSlider çıktısından bazı sayısal dönüşümler yapmanız gerekebilir.