|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
[JAVA] Gestione file audio
Ragazzi, io in un thread avvio un file audio, mentre se premo un pulsante non funziona. il codice è questo:
Codice:
private void avviaMusica(){
try{
this.file=new File("digitalClock/bell.wav");
this.ais=AudioSystem.getAudioInputStream(file);
this.audioformat=ais.getFormat();
this.info = new DataLine.Info(SourceDataLine.class,audioformat);
this.line=(SourceDataLine) AudioSystem.getLine(info);
line.open(audioformat);
line.start();
copyStream(ais,line);
line.drain();
line.close();
}
catch(Exception e){e.printStackTrace();}
}
private void copyStream(AudioInputStream ais, SourceDataLine line) {
// TODO Auto-generated method stub
try{
int buffer =128000;
byte []buf=new byte [buffer];
while(true){
int read=ais.read(buf);
if(read==-1)break;
line.write(buf,0,read);
}
}
catch(Exception e){e.printStackTrace();}
}
Codice:
private File file; private AudioInputStream ais; private AudioFormat audioformat; private DataLine.Info info; private SourceDataLine line; e mi dite come farlo.
__________________
My gaming placement |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 418
|
Quote:
Quindi quando premi il pulsante "Stop" devi far uscire il codice da quel ciclo, magari mettendo una variabile boolean che cambi quand'è il momento |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
ok, ora provo e vi faccio sapere.
__________________
My gaming placement |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Apr 2005
Messaggi: 224
|
Se ti può essere utile tempo fa ho realizzato una classe per gestire la riproduzione di file audio con le classiche funzionalità (play, stop, mute e loop) e puoi consultarne il codice, c'è anche l'API in javadoc.
http://www.code4fun.org/_apps/audioplayer/ Ciao. |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
ok, grazie anche a te, comunque ho provato e niente, non funziona mettendo la variabile a false.CIAO
__________________
My gaming placement |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 418
|
Quote:
Al contrario con un buffer molto piccolo il ciclo esegue molti loop e puoi fermarlo in maniera quasi istantanea. Oppure (cosa migliore) puoi guardare nelle api per vedere qual'è il metodo "giusto" da invocare per stoppare la riproduzione....ad esempio: potresti invocare line.stop(). |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
ok, + tardi provo e vi faccio sapere
ciao
__________________
My gaming placement |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:34.



















