J2me проблема с воспроизведением нескольких звуковых файлов - PullRequest
0 голосов
/ 25 апреля 2011

У меня проблема с воспроизведением более 2 звуковых файлов в игре, которую я сейчас разрабатываю в j2me MIDP2 в eclipse.Посоветуйте, пожалуйста, лучший способ воспроизведения нескольких звуковых файлов "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 ]

1 голос
/ 14 мая 2011

Спецификация Java ME не является специфической в ​​этом отношении, но на реальных устройствах вы обычно можете иметь только одного выделенного игрока за раз, поэтому просто остановить игрока недостаточно. Смотрите также это сообщение на форуме . Я обнаружил, что даже перед тем, как играть новый, сложно даже правильно освободить игрока, поэтому в моем собственном коде я прибегнул к ожиданию окончания одного звука, прежде чем пытаться воспроизвести новый.

0 голосов
/ 03 июля 2012

в j2me есть только один игрок. Более 1 игрока не поддерживаются. Как выполнить звук один звук за другим или любым другим. Если вы хотите воспроизвести несколько звуков, значит, вы должны следовать приведенной ниже кодировке

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.
}

}
...