Java J2me播放器,一个接一个播放MP3文件

Java J2me播放器,一个接一个播放MP3文件,java,java-me,media-player,mmapi,Java,Java Me,Media Player,Mmapi,我无法一个接一个地播放MP3文件,当一个文件播放完后,需要启动另一个文件。我只能开始播放一个文件,当我输入代码开始下一个文件时,它什么也不做。由于某些原因,我无法在文件期间使用thread.sleep()。还有别的办法吗 //this is the basic code.. playq(String fname){ pl = Manager.createPlayer(stream,"audio/mpeg"); pl.realize(); pl.prefetch(); pl.start();

我无法一个接一个地播放MP3文件,当一个文件播放完后,需要启动另一个文件。我只能开始播放一个文件,当我输入代码开始下一个文件时,它什么也不做。由于某些原因,我无法在文件期间使用
thread.sleep()
。还有别的办法吗

//this is the basic code..
playq(String fname){
pl =  Manager.createPlayer(stream,"audio/mpeg");
pl.realize();

pl.prefetch();

pl.start();

// what should i use here?? pls i don't want to use thread.sleep..
playagain(fname);
}
void playagain(String fname){
        try {

    pl.stop();
    pl.deallocate();
   pl.close();

} catch (Exception ex) {}
 //change file name and stream and..
        playq(mp3f);
    }
您的代码应该尝试播放
捕获
块中的代码-首先,只有在生成异常时才会调用它(您通常也不应该捕获
异常
-使用更具体的方法)

您确定不能使用
Thread.sleep()
?如果你真的不想这样做(例如,如果用户可以暂停剪辑…)

相反,使用
PlayerListener
界面,收听媒体的
END\u
事件

一个非常基本的示例(如中所示,这没有经过测试,除此之外还需要更多的工作):

公共类PlayerRunner实现PlayerListener{
私有最终字符串[]文件;
私人指数=0;
公共PlayerRunner(字符串[]歌曲){
this.songFiles=歌曲;
}
公开作废开始(){
playerUpdate(null,null,null);
}
//PlayerListener接口需要此方法
public void playerUpdate(播放器、字符串事件、对象事件数据){
//第一次通过的所有参数将为空/空。。。
布尔值nextSong=(事件==null);
if(event==PlayerListener.END\u媒体){
player.stop();
player.dallosite();
player.close();
nextSong=索引
请注意,我没有完全正确地执行此操作—例如,我没有执行异常处理。而且,如果不了解你的情况,我也不知道还有什么好担心的。这应该只是一个简单的答案,让你开始考虑你应该去哪里

(另外,我从未使用过JME的媒体播放器,因此我不知道关于GC的任何警告等)。

您是如何在JavaME中使用
List
的?winces我说过我从来没有弄乱过JavaME,这显示了。正在更改为使用arraylist。
public class PlayerRunner implements PlayerListener {

    private final String[] songFiles;
    private int songIndex = 0;

    public PlayerRunner(String[] songs) {
        this.songFiles = songs;
    }

    public void start() {
        playerUpdate(null, null, null);
    }

    // This method is required by the PlayerListener interface
    public void playerUpdate(Player player, String event, Object eventData) {
        // The first time through all parameters will be blank/null...
        boolean nextSong = (event == null);
        if (event == PlayerListener.END_OF_MEDIA) {
            player.stop();
            player.dallocate();
            player.close();
            nextSong = index < songIndex.length;
        }

        if (nextSong) {
            String fileName = songFiles[index++];
            if (fileName != null) {
                Player pl = Manager.createPlayer(fileName, "audio/mpeg");
                pl.addPlayerListener(this);
                pl.realize();
                pl.prefetch();
                pl.start();
            }
        }
    }
}