dźwiękiem w javie nie działa

0

Mam następujący problem

Uczę się dopiero obsługi dźwięku w javie i jak na razie stworzyłem taki kod:

	
	private Position curPosition;
	
	private final int EXTERNAL_BUFFER_SIZE = 524288; //128Kb
	
	enum Position{
		LEFT, RIGHT, NORMAL
	};

	
	public void odtworz(char l)
	{
		String sciezkadop = "C:/aio/czytacz/"+l+".wav";
		File plikdzwiekuliter = new File(sciezkadop);
		if (!plikdzwiekuliter.isFile())
		{
			System.err.println("Nie ma pliku " + l);
		}
		
		if (!plikdzwiekuliter.exists())
		{
			System.err.println("Plik jest otwarty przez inna aplikacje (wav) :" + l);
			return;
		}
		
		AudioInputStream ais = null;
		
		try {
			ais = AudioSystem.getAudioInputStream(plikdzwiekuliter);
		} catch (UnsupportedAudioFileException e1) {
			e1.printStackTrace();
			System.err.println("Nie dziala wava :" + l);
			return;
		} catch (IOException e1) {
			e1.printStackTrace();
			System.err.println("Nie dziala wava :" + l);
			return;
		}
		
		AudioFormat format = ais.getFormat();
		SourceDataLine auline = null;
		DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
		
		try {
			auline = (SourceDataLine) AudioSystem.getLine(info);
		} catch (LineUnavailableException e1) {
			e1.printStackTrace();
			System.err.println("Nie dziala wava :" + l);
			return;
		} catch (Exception e1) {
			e1.printStackTrace();
			System.err.println("Nie dziala wava :" + l);
			return;
		}
		
		if (auline.isControlSupported(FloatControl.Type.PAN)) {
			FloatControl pan = (FloatControl) auline
					.getControl(FloatControl.Type.PAN);
			if (curPosition == Position.RIGHT)
				pan.setValue(1.0f);
			else if (curPosition == Position.LEFT)
				pan.setValue(-1.0f);
		}
		
		auline.start();
		int nByteRead = 0;
		byte[] abData = new byte[EXTERNAL_BUFFER_SIZE];
		
		try {
			while (nByteRead!= -1) {
				nByteRead = ais.read(abData, 0, abData.length);
				if (nByteRead >= 0)
					auline.write(abData, 0, nByteRead);
			}
		} catch (IOException e) {
			e.printStackTrace();
			return;
		} finally {
			auline.drain();
			auline.close();
		}
		
		
	}

kod jest wzorowany na http://www.anyexample.com/programming/java/java_play_wav_sound_file.xml
(tak wiem praktycznie przepisany)

program działa, wykonuje się ale nie ma dźwięku. Czemu?

używam eclipse i nie doinstalowywałem żadnych dodatków (wersja jest najnowsza)

(zaimportowałem
import javax.sound.sampled.;
import java.io.
;)

1

Spróbuj skopiować sobie cały tutorial i odpal wątek. Jeżeli odpali to znaczy, że źle przepisałeś kod (gdzieś jest babol). Jeżeli nie to może błąd z wczytaniem pliku/ścieżką etc.

 new AePlayWave("test.wav").start();
0

dobra działa dzięki

a jak zrobić by program czekal zanim odtworzy następny wav?
bo jak podaje mu dwa które ma odtworzyć po kolei to odtwarza ba naraz

0

Metoda

 getState()

o ile dobrze pamiętam sprawdza stan wątku. Czy jest uruchomiony czy zakończony etc.

0

ok a jak zrobić by dopiero po tym jak status jest zakończony dodał nowa sciezke (wava)

0

proszę o odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1