Som toca algumas vezes e pára de tocar!

Toda vez que ocorre colisão com um item no cenário esse código entra em ação:

try {
   InputStream is = getClass().getResourceAsStream("beep.wav");
   Player sound = Manager.createPlayer(is, "audio/x-wav");
   sound.realize();
   sound.prefetch();
   sound.start();
}
catch(Exception e) {
   System.out.println(e);
}      

O som é tocado algumas vezes, mas depois de um tempo simplesmente não toca mais e ocorre a exception:

Porque isso está acontecendo e como corrigir?

olha, já que ninguém respondeu. vou tentar ajudar.

eu tinha um problema parecido quando testava em celulares motorola.

o som pegava algumas vezes mas depois parava de tocar mas não dava exception.

eu acho que seja um bug isso, mas, nao consegui entender direito esse problema.

O que fiz foi evitar que o mesmo som seja tocado novamente antes de terminar o som anterior.

se ainda tiver com problemas tenta ao inves de usar:
sound.realize();
sound.prefetch();

chamar o construtor novamente.

foi como eu disse ,esse foi um problema que até hoje nao tenho solução sensata.

uma observação muito importante é que quando eu testava nos emuladores nao tocava som mas funcionava direitinho no dispositivo e vice-versa.
NUNCA CONFIE NOS EMULADORES

ESPERO TER AJUDADO!

edprado, já me indicaram um caminho que funcionou muito bem. Em vez de criar o som e executá-lo toda vez que ocorre o evento respectivo (item, fase, etc), cria-se o som e todas suas configurações, e chama .start() toda vez que o evento para o som for acionado. Exemplo:


private InputStream is;
private Player sound;

.............

try { 
   is = getClass().getResourceAsStream("beep.wav"); 
   sound = Manager.createPlayer(is, "audio/x-wav"); 
   sound.realize(); 
   sound.prefetch(); 
}
catch(Exception e) { 
   System.out.println(e); 
} 

.................

Agora, cada vez que precisar tocar o som, você faz:

try { 
   sound.start();
} 
catch(Exception e) { 
   System.out.println(e); 
}   

O único problema ocorre quando o som é tocado antes que o som anterior pare de tocar. Mas aí é só fazer esse teste que você mencionou!

Obrigado, espero ter contribuído também.