Bom dia,
Eu crie uma classe que funciona da sequinte maneira :
Ela percorre um arquivo .txt e pegando os nomes dos arquivos de audio que eu quero adicionar em um arrayList.
Ela tambem carrega o arquivo de som um por vez no metodo carregarVoz()
E cria a linha com esse arquivo criarLinha()
de resto ela toca o arquivo atual , avança arquivo, volta arquivo, para…
Meu problema é que Ela não ta funcionando. Ela não TOCA o som. Não da erro nenhum, a aplicação simplesmente começa e ja termina sem que o som toque.
package mult.controladores;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
public class Vozes {
private AudioInputStream stream;
private AudioFormat format;
private Clip clip;
private ArquivosCursos arquivosCursos;
private List<String> nomeArquivoVozes;
private int posVoz;
public Vozes(ArquivosCursos arquivosCursos) {
this.arquivosCursos = arquivosCursos;
carregarNomesVozes();
}
private void carregarNomesVozes() {
try {
nomeArquivoVozes = new ArrayList<String>();
FileReader leitor1 = new FileReader("NomeVozes/"
+ arquivosCursos.getArquivoCurso());
BufferedReader leitor2 = new BufferedReader(leitor1);
String nome = null;
while ((nome = leitor2.readLine()) != null) {
nomeArquivoVozes.add(nome);
}
leitor2.close();
} catch (Exception e) {
e.printStackTrace();
}
}
private void criarLinha() {
DataLine.Info info = new DataLine.Info(Clip.class, format);
try {
clip = (Clip) AudioSystem.getLine(info);
clip.open(stream);
} catch (LineUnavailableException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void carregarVoz() {
try {
File file = new File(arquivosCursos.getDiretorioVozes()
+ nomeArquivoVozes.get(posVoz));
stream = AudioSystem.getAudioInputStream(file);
format = stream.getFormat();
} catch (UnsupportedAudioFileException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
criarLinha();
}
public void avancarVoz() {
if ((nomeArquivoVozes.size() - 1) > posVoz) {
posVoz++;
}
}
public void voltarVoz() {
if (posVoz > 0) {
posVoz--;
}
}
public void tocarVoz() {
clip.start();
}
public void pararVoz() {
clip.stop();
}
}
package mult.test;
import mult.controladores.ArquivosCursos;
import mult.controladores.Cursos;
import mult.controladores.Vozes;
public class TesteVozes {
public static void main(String[] args) {
ArquivosCursos arquivosCursos = new ArquivosCursos(Cursos.WIN_XP_BASICO);
Vozes vozes = new Vozes(arquivosCursos);
vozes.carregarVoz();
vozes.tocarVoz();
}
}
Alguem poderia me ajudar ? o que estou fazendo de errado ?
Agradecido.


