簡體   English   中英

在JLayer中使用一個線程時,如何停止當前播放歌曲?

[英]How to Stop Current Playing Song When using one thread with JLayer?

最近,我使用Jlayer來播放Java中的mp3歌曲,從而解決了一個線程一次的問題。 但是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處於活動狀態的問題(僅在另一個線程中-我想要的),我無法開始播放另一首歌曲了:-(

我能做什么?

這與另一個問題非常相似,您可以一次播放一個音頻幀,然后檢查標志是否應該暫停(在您的情況下停止播放)。

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

好了,在對代碼進行了調整之后,我意識到替換當前線程可以解決問題。 即使上一首歌尚未結束,它也可以讓您開始播放另一首歌。

這是新代碼:

執行者執行者; //班級成員

每次您想播放一首歌曲時,只需替換現有歌曲的主題,
因此,無論另一首歌曲的進度如何,您都可以播放另一首歌曲

executor = Executors.newSingleThreadExecutor();
executor.execute(new Runnable(){public void run(){
/* 做一點事 */
}});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM