【发布时间】:2021-05-16 09:51:59
【问题描述】:
这是我的代码:
import java.io.File;
import jaco.mp3.player.MP3Player;
class SimpleAudioPlayer {
public static void main(String[] args) {
File audio_file = new File("Clarx - H.A.Y.mp3");
MP3Player music_player = new MP3Player();
music_player.addToPlayList(audio_file);
music_player.play();
// wait for music_player.play() to finish executing
}
}
我想创建一个 mp3 播放器,发现 this Project,代码 sn-p 所做的是创建一个新的 MP3Player 对象,创建一个新文件,并将其添加到播放列表中。之后,它才开始播放歌曲。但问题是在程序停止执行之前它只播放了大约一两秒的文件。如何等到 play() 函数停止执行?
答案: 感谢 giraycoskun !
import java.io.File;
import jaco.mp3.player.MP3Player;
import java.util.concurrent.*;
class SimpleAudioPlayer {
public static void main(String[] args) {
File audio_file = new File("Clarx - H.A.Y.mp3");
MP3Player music_player = new MP3Player();
music_player.addToPlayList(audio_file);
ExecutorService threadpool = Executors.newCachedThreadPool();
Future<Long> futureTask;
futureTask = (Future<Long>) threadpool.submit(music_player::play);
// Simple variable to check hpw often the folowing loop gets executed
int n = 0;
while (!futureTask.isDone()) {
System.out.println("Executing" + n);
n++;
}
}
}
我不得不对他提交的答案做一些小改动,但效果很好,非常感谢!
【问题讨论】: