2017-05-02 15 views
0

私がボタンを押すと、netbeans自体がこう言っています: "スレッド内の例外" AWT-EventQueue-0 "java.lang.IllegalArgumentException:インタフェースTargetDataLineをサポートする行がありませんPCM_SIGNED 44100.0 Hz、16 bit、mono 、2バイト/フレーム、ビッグエンディアンがサポートされています。 この行がサポートされていない場合、「行はサポートされていません」というエラーメッセージがポップアップ表示されます。代わりに、何も起こりません。 どうすればいいですか?あなたが最初にそれを呼ばれるので、基本的に何をやっていることは、それはメッセージダイアログが実行されていない

AudioSystem.getLine(info); 
if (!AudioSystem.isLineSupported(info)) {... 

getLineことは可能ですかどうかを確認するためにチェックする前にAudioLineを取得しようとしている

public class Ouvir extends NewJFrame{ 

AudioFormat audioFormat; 
TargetDataLine targetDataLine; 
TargetDataLine line; 

void captureAudio(){ 

      Listen.setEnabled(false); 
      try{ 
      audioFormat = getAudioFormat(); 
      DataLine.Info info = new DataLine.Info(TargetDataLine.class, audioFormat); 
      line = (TargetDataLine) AudioSystem.getLine(info); 
      AudioSystem.getLine(info); 

      if (!AudioSystem.isLineSupported(info)) { 
       String error = "Line not supported"; 
       JOptionPane.showMessageDialog(null,error,"+",JOptionPane.ERROR_MESSAGE); 
       line.close(); 
      } 

      line.open(); 
      line.start(); 
     } 
      catch (LineUnavailableException e) {} 
     } 

void stopCapture(){ 

    if(line != null) 
     { 
     line.stop(); 
     line.close(); 
     } 
    if(!Stop.getModel().isPressed()) 
     { 
     line.stop(); 
     line.close(); 
     } 
     } 

private AudioFormat getAudioFormat(){ 


     return new AudioFormat(44100,16,1,true,true); 
    } 
    } 
+0

サポートされているかどうかをテストする前に 'AudioLine'を取得します – MadProgrammer

+0

どうすればこの問題を解決できますか?かなり入手していません –

+0

'AudioSystem.isLineSupported(info)'を 'AudioSystem.getLine(info)'の前に呼び出す必要があります。そうでなければ、サポートできるかどうか – MadProgrammer

答えて

1

はサポートされていない例外をスローしています。あなたのロジックを逆にする必要があります

関連する問題