2012-05-16 10 views
5

पर नियंत्रण पाने में मदद की ज़रूरत है इस समय मैं अपने पीसी की मास्टर वॉल्यूम को नियंत्रित करने के लिए Java में JSlider का उपयोग करने का प्रयास कर रहा हूं। अब तक मैं अपने पीसी के मुख्य स्पीकर पोर्ट को ढूंढने में सक्षम हूं। हालांकि, मुझे नहीं पता कि इसे सफलतापूर्वक कैसे कॉल करें और getValue() या setValue() जैसी विधि चलाएं।मेरे कंप्यूटर के मुख्य आउटपुट स्पीकर

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

मैं अपने वक्ताओं लाइन का नियंत्रण कैसे हो जाते हैं और मूल्य में परिवर्तन करते हैं:

मैं इसके बारे में सभी के लिए मेरे पीसी खोज करने के लिए निम्नलिखित कोड का इस्तेमाल किया है ऑडियो उपकरणों है?

मैंने अब तक सहायता के लिए this वेबसाइट का उपयोग किया है।


अद्यतन

ठीक है तो मुझे लगता है कि मैं थोड़ा करीब आ गए हैं। मेरे परीक्षण जीयूआई प्रोग्राम के तहत मैं जावा ट्यूटोरियल के कोड का उपयोग करने की कोशिश कर रहा हूं, "एक रेखा प्राप्त करना जिसमें वांछित नियंत्रण है" (जो लिंक आपने मुझे दिया है) के तहत। मैंने इसे अपने जेएसएलडर के चेंज श्रोता के तहत अपने कार्यक्रम में चिपकाया।

यह हैं कि यह दिखता है:

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

जब भी मैं स्लाइडर इसे बाहर प्रिंट त्रुटि अपवाद संदेश ले जाने के "खोजने की कोशिश विफल ..."। यह मुझे मेरे मुख्य आउटपुट स्पीकर पर volCtrl क्यों नहीं दे रहा है? मैं अपने स्पीकर पर नियंत्रण पाने के लिए इस कोड को कैसे ठीक कर सकता हूं?

उत्तर

0

जावारंच में बढ़िया खोज! मुझे वहां बहुत सारी मूल्यवान मदद मिली है। http://docs.oracle.com/javase/tutorial/sound/controls.html

लेकिन कभी कभी उच्च और निम्न Vals अप्रत्याशित हैं:

बार जब आप अपने लाइनों का पता लगाने, इस ट्यूटोरियल कैसे एक नियंत्रण बनाने के लिए पता चलता है। मुझे एक पंक्ति मिली जो -80 से +6 तक थी (यह एक वीयू मीटर की डेसीबल रेंज की नकल करने के लिए सेट थी)। इस प्रकार, आपको उचित मिलान नियंत्रण मान प्राप्त करने के लिए JSlider आउटपुट से कुछ संख्यात्मक रूपांतरण करना पड़ सकता है, खासकर अगर नियंत्रण घातीय हो।

संबंधित मुद्दे