У меня есть проблема перезапуска звука в J2ME. Я хочу создать плеер в конструкторе, а затем вызвать playExplosion(), чтобы воспроизвести его, но он воспроизводится только один раз. Я использую Wireless Toolkit.Невозможно воспроизвести звук в J2ME
класс Sound
public class Sound() {
private Player playerExplosion;
public Sound() throws IOException, MediaException {
// Explosion
InputStream is = getClass().getResourceAsStream("/explosion.mid");
playerExplosion = Manager.createPlayer(is, "audio/midi");
playerExplosion.realize();
playerExplosion.setLoopCount(1);
}
public void playExplosion() {
try {
System.out.println(playerExplosion.getState());
playerExplosion.start();
} catch (MediaException ex) {
ex.printStackTrace();
}
}
}
MyMIDlet класс
public class MyMIDlet extends MIDlet() {
public Sound sound;
public MyMIDlet() {
// Init sound object
try {
sound = new Sound(this);
} catch (Exception ex) {
ex.printStackTrace();
}
// Test
System.out.println("Start");
for (int i = 0; i < 5; i++) {
sound.playExplosion();
// My sound is less than 1 second.
try {
Thread.sleep(2000);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
System.out.println("End");
}
}
Выход
Start
200
300
300
300
300
End
За 1-й раз, playerExplosion state before start() - 200 (REALIZED).
Для 2-го, 3-го, 4-го, 5-го раз, игрока. Состояние взрывозащиты перед запуском() равно 300 (ПРЕДВАРИТЕЛЬНЫЙ).
На данный момент я должен создать playerExplosion снова в методе playExplosion(), но он слишком медленный в реальном устройстве.