j2me播放多个声音文件的问题

时间:2011-04-25 11:28:59

标签: java-me audio-player midp-2.0

我在eclipse中的j2me MIDP2中正在开发的游戏中播放超过2个声音文件时遇到问题。 请告诉我播放多个“wav”声音文件的最佳方法。 我创建了以下方法,在程序启动时调用一次

public void setSound()
        {
            System.out.println("Sound on");
            try {
                p1=Manager.createPlayer(is1, "audio/X-wav");
                p2=Manager.createPlayer(is2, "audio/X-wav");
                p3=Manager.createPlayer(is3, "audio/X-wav");
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (MediaException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

每当我需要播放其中一个声音时,我会停止其他两个玩家(以确保其中没有人正在运行p2.stop(); p3.stop();)并启动第三个(p1.start();)并且每个时间我有两个玩家停止(处于PREFETCHED状态)第三个没有运行并且抛出异常。

2 个答案:

答案 0 :(得分:1)

Java ME规范并未对此进行具体说明,但在实际设备上,您通常一次只能有一个分配的播放器,因此仅停止播放器是不够的。另见this forum post。我发现即使在播放一个新播放器之前正确地释放一个播放器也是一个挑战,所以我in my own code在尝试播放新播放器之前等待一个声音结束。

答案 1 :(得分:-1)

在j2me中只有一个玩家。不支持一个以上的玩家。如何一个接一个地或另一个声音执行声音。如果你想播放多个声音意味着你按照下面的编码

public class AudioPlayer implements javax.microedition.media.PlayerListener{

Player player;
int count=0;

public void playMedia(){

try{

player = Manager.createPlayer(getClass().getResourceAsStream(audioFiles[count]),"audio/x-amr");
player.addPlayerListener(this);
player.start();

}
catch (Exception e) {
return ;
}
}


public void playerUpdate(Player p,String event,Object eventData) 
{

        //Playing next audio file after completion of current audio.
}

}