2011-06-30 21 views
0

私はmp3ファイルのJavaを再生するコードを持っています。プログラムがブレークポイントでデバッグモードではなく、ファイル名を指定して実行モードで実行したときに>オーディオ出力のみを聞いた - 私が遭遇Javaの音楽プレーヤーですか?

問題が

は、ということでした。

この問題にどのように対処できますか?私は理解を深めるためにコードを添付しました。

mainメソッドのコードは、非常に迅速に終了するため、おそらくあなたのプログラムだけで終了している
FileInputStream mp3_file=new FileInputStream("xyz.mp3"); 
Player mp3=new Player(mp3_file); 
mp3.play(); 
System.out.println("Over"); 
+2

は、だから何が起こりますか?アプリはすぐに終了しますか?私は 'Player.play()'メソッドが、トラックが終了するまでブロックするのではなく、単に再生を開始すると思っています。 –

+0

しばらくしてから、コンソール出力が「オーバー」になり、オーディオ出力はありません... –

答えて

0

私のプロジェクトで同じ問題が発生しました。私はforループを使用しました。それは私の問題を解決する。

FileInputStream mp3_file=new FileInputStream("xyz.mp3"); 
Player mp3=new Player(mp3_file); 
for(int i=0;i<=3; i++) 
    mp3.play(); 

System.out.println("Over"); 

しかし、それをあなたのコードの実行可能なjarファイルを作成して実行した場合、それが正常に動作します.....;)あなたは* *ちょうどそれを実行しないとき

0

私たちはあなたのPlayerが何であるかはわかりませんが、私は主なスレッドとは別のスレッドで音楽を再生していると思います。コードが停止している限り、正常に動作します。

mainメソッドでは、コードの実行を停止する必要があります。それに加えて

import java.util.Scanner; 
... 
// here we will get input and program won't quit until we press Return 
new Scanner(System.in).readLine(); 

を、あなたはメインスレッドをスリープ状態にし、あまりにも多くの時間を待つために

try{Thread.sleep(Long.MAX_VALUE);} catch(Exception e){} 

のようなものを使用することができます。そのためには、単にあなたが使用してコンソールから何かを読み取ることができます。

1

音楽が終了する前にプログラムが終了している可能性があります。音楽が終了するまでプログラムが終了していないことを確認してください。例:

mp3.play(); 
System.out.println("Press Enter to stop"); 
System.in.read(); // wait until user presses Enter 
関連する問題