[英]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處於活動狀態的問題(僅在另一個線程中-我想要的),我無法開始播放另一首歌曲了:-(
我能做什么?
這與另一個問題非常相似,您可以一次播放一個音頻幀,然后檢查標志是否應該暫停(在您的情況下停止播放)。
好了,在對代碼進行了調整之后,我意識到替換當前線程可以解決問題。 即使上一首歌尚未結束,它也可以讓您開始播放另一首歌。
這是新代碼:
執行者執行者; //班級成員
每次您想播放一首歌曲時,只需替換現有歌曲的主題,
因此,無論另一首歌曲的進度如何,您都可以播放另一首歌曲
executor = Executors.newSingleThreadExecutor();
executor.execute(new Runnable(){public void run(){
/* 做一點事 */
}});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.