0

私は最近、Jlayer を使用して Java で mp3 曲を再生するときに、一度に 1 つのスレッドの問題に対する解決策を使用しました。しかし、Kaleb Brasee によるこのソリューションは、プレーヤーを停止する方法、つまり、player.close() を呼び出す方法を示唆していませんでした。

Kaleb のコードは次のとおりです。

Executor executor = Executors.newSingleThreadExecutor();  
executor.execute(new Runnable() { public void run() {  
 /* do something */  
} });

これは私がrun()に入れたコードです

if(player != null) player.close();  

try{  
player = new Player(new FileInputStream(musicD.getPath()));  
player.play();  
}catch(Exception e){} 

問題は、これが音楽の再生中に GUI をアクティブに保つという問題を解決するのと同じくらい (他の 1 つのスレッドでのみ - 私が望んでいたこと)、別の曲の再生を開始できないことです :-(

どうすればよいですか?

4

2 に答える 2

0

コードを微調整した後、現在のスレッドを置き換えると問題が解決することに気付きました。前の曲がまだ終わっていなくても、別の曲の再生を開始できます。

これは新しいコードです:

エグゼキュータ エグゼキュータ; //クラスメンバー

曲を再生するたびにこれを行うと、既存の曲のスレッドが置き換えられるだけな
ので、他の曲の進行状況に関係なく、別の曲を再生できます。

executor = Executors.newSingleThreadExecutor();
executor.execute(new Runnable() { public void run() {
/* 何かをする */
} });

于 2011-01-10T14:38:57.793 に答える
0

これは他の質問と非常によく似ています。一度に 1 つのオーディオ フレームを再生し、一時停止する必要がある場合はフラグを確認し、場合によっては再生を停止できます。

https://stackoverflow.com/a/16738486/2094045

于 2013-05-24T15:39:27.363 に答える