Guest skinie18 Posted July 21, 2012 at 03:05 AM Report #469467 Posted July 21, 2012 at 03:05 AM Boas eu basicamente estou a fazer um Obrjecto(classe) som, que permite reproduzir um som .wav eu consigo fazer play e stop. mas nao consigo fazer reload mais que uma vez. Porque depois da primeira nao funciona mais. Alguém sabe como resolver o problema e o reload recomeçar a musica? public class Sound { private AudioStream au; private InputStream in; public Sound(InputStream in) throws IOException, InvalidNameException { this.in = in; this.au = new AudioStream(in); } public void play() { AudioPlayer.player.start(au); } public void stop() { AudioPlayer.player.stop(au); } public void reload() { AudioPlayer.player.stop(au); AudioPlayer.player.start(au); } }
Baderous Posted July 21, 2012 at 11:03 AM Report #469488 Posted July 21, 2012 at 11:03 AM Verifica na API dessas 2 classes de streams que usas se não há nenhum método para colocar o apontador para a stream no seu início (i.e., fazer o rewind).
Guest skinie18 Posted July 21, 2012 at 02:23 PM Report #469521 Posted July 21, 2012 at 02:23 PM (edited) Verifica na API dessas 2 classes de streams que usas se não há nenhum método para colocar o apontador para a stream no seu início (i.e., fazer o rewind). Eu ja verifiquei isso, e encontrei isto: http://docs.oracle.com/javase/1.4.2/docs/api/javax/sound/sampled/AudioInputStream.html estive a tentar usar o reset(); mas depois percebi que antes tinha de usar o mark(); mas por mais tentativas que faça eu nao consigo fazer reload. Ate ja tentei na class reload fazer algo do tipo: public void reload() { AudioPlayer.player.start(new AudioStream(in)); } Mas mesmo assim não dá! Estou encalhado aqui! Edited July 21, 2012 at 02:26 PM by skinie18
Baderous Posted July 21, 2012 at 03:02 PM Report #469528 Posted July 21, 2012 at 03:02 PM (edited) Essa documentação não corresponde às classes que estás a usar. Essa é da AudioInputStream e o que tu estás a usar é a AudioStream. Pode-se dar o caso do método mark() não ter efeito na stream em questão. No teu caso estás a usar uma InputStream, cuja documentação do método mark() diz: The mark method of InputStream does nothing. E pelo que li do código fonte da classe AudioStream, é feito um teste sobre a stream de input através do método markSupported(). Experimenta, ao criar uma instância dessa classe Sound, atribuir à InputStream uma instância de uma subclasse sua que suporte os métodos mark() e reset() e depois testa. Edited July 21, 2012 at 03:03 PM by Baderous
Guest skinie18 Posted July 22, 2012 at 09:36 AM Report #469629 Posted July 22, 2012 at 09:36 AM Mas conhece alguma outra maneira de reproduzir som em java?
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now