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);
}
}
サポートされているかどうかをテストする前に 'AudioLine'を取得します – MadProgrammer
どうすればこの問題を解決できますか?かなり入手していません –
'AudioSystem.isLineSupported(info)'を 'AudioSystem.getLine(info)'の前に呼び出す必要があります。そうでなければ、サポートできるかどうか – MadProgrammer