Jump to content
Sign in to follow this  
skinie18

AudioStream, caixa de sons

Recommended Posts

skinie18

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);
}
}

Share this post


Link to post
Share on other sites
Baderous

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

Share this post


Link to post
Share on other sites
skinie18

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 by skinie18

Share this post


Link to post
Share on other sites
Baderous

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 by Baderous

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.