Воспроизвожу звук таким образом:
import javax.sound.sampled.*;
import java.io.File;
import java.io.IOException;
public class Music implements Runnable {
public Clip clip1;
public Clip clip2;
public Clip clip3;
public void run(){
while (true) {
try {
File soundFile = new File("MenuMusic.wav");
AudioInputStream ais = AudioSystem.getAudioInputStream(soundFile);
clip1 = AudioSystem.getClip();
clip1.open(ais);
FloatControl vc = (FloatControl) clip1.getControl(FloatControl.Type.MASTER_GAIN);
vc.setValue(-8);
clip1.setFramePosition(0);
clip1.start();
Thread.sleep(clip1.getMicrosecondLength() / 1000);
clip1.stop();
clip1.close();
} catch (IOException | UnsupportedAudioFileException | LineUnavailableException exc) {
exc.printStackTrace();
} catch (InterruptedException exc) {
}
}
}
public void note_2(){
while (true) {
try {
File soundFile = new File("WindowsMusic.wav");
AudioInputStream ais = AudioSystem.getAudioInputStream(soundFile);
clip2 = AudioSystem.getClip();
clip2.open(ais);
FloatControl vc = (FloatControl) clip2.getControl(FloatControl.Type.MASTER_GAIN);
vc.setValue(-8);
clip2.setFramePosition(0);
clip2.start();
Thread.sleep(clip2.getMicrosecondLength() / 1000);
clip2.stop();
clip2.close();
} catch (IOException | UnsupportedAudioFileException | LineUnavailableException exc) {
exc.printStackTrace();
} catch (InterruptedException exc) {
}
}
}
public void note_3(){
while (true) {
try {
File soundFile = new File("");
AudioInputStream ais = AudioSystem.getAudioInputStream(soundFile);
clip3 = AudioSystem.getClip();
clip3.open(ais);
clip3.setFramePosition(0);
clip3.start();
Thread.sleep(clip3.getMicrosecondLength() / 1000);
} catch (IOException | UnsupportedAudioFileException | LineUnavailableException exc) {
exc.printStackTrace();
} catch (InterruptedException exc) {
}
}
}
}
Класс Frame:
import javax.sound.sampled.*;
import java.io.File;
import java.io.IOException;
public class Music implements Runnable {
public Clip clip1;
public Clip clip2;
public Clip clip3;
public void run(){
while (true) {
try {
File soundFile = new File("MenuMusic.wav");
AudioInputStream ais = AudioSystem.getAudioInputStream(soundFile);
clip1 = AudioSystem.getClip();
clip1.open(ais);
FloatControl vc = (FloatControl) clip1.getControl(FloatControl.Type.MASTER_GAIN);
vc.setValue(-8);
clip1.setFramePosition(0);
clip1.start();
Thread.sleep(clip1.getMicrosecondLength() / 1000);
clip1.stop();
clip1.close();
} catch (IOException | UnsupportedAudioFileException | LineUnavailableException exc) {
exc.printStackTrace();
} catch (InterruptedException exc) {
}
}
}
public void note_2(){
while (true) {
try {
File soundFile = new File("WindowsMusic.wav");
AudioInputStream ais = AudioSystem.getAudioInputStream(soundFile);
clip2 = AudioSystem.getClip();
clip2.open(ais);
FloatControl vc = (FloatControl) clip2.getControl(FloatControl.Type.MASTER_GAIN);
vc.setValue(-8);
clip2.setFramePosition(0);
clip2.start();
Thread.sleep(clip2.getMicrosecondLength() / 1000);
clip2.stop();
clip2.close();
} catch (IOException | UnsupportedAudioFileException | LineUnavailableException exc) {
exc.printStackTrace();
} catch (InterruptedException exc) {
}
}
}
public void note_3(){
while (true) {
try {
File soundFile = new File("");
AudioInputStream ais = AudioSystem.getAudioInputStream(soundFile);
clip3 = AudioSystem.getClip();
clip3.open(ais);
clip3.setFramePosition(0);
clip3.start();
Thread.sleep(clip3.getMicrosecondLength() / 1000);
} catch (IOException | UnsupportedAudioFileException | LineUnavailableException exc) {
exc.printStackTrace();
} catch (InterruptedException exc) {
}
}
}
}
Это в отдельном классе. Там же у меня несколько других звуков. Так вот, нужно что бы эти звуки можно было воспроизводить при нажатии на кнопку. При первом нажатии всё срабатывает, но затем, пока не закончится воспроизведение, нажатия на другие кнопки не считываются. Скорее всего это из-за потока, но я не совсем понимаю, как это работает, кто может подсказать?
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
В классе есть статический массив типа String:
Как сделать компилятор для андроида например компилятор по c++ или другие языки программирования без разницыИ что для этого нужно знать?
Понятно что оба алгоритма, призваны "сжать" используемые ячейки памяти так, что-бы они шли подряд
Есть три класса: A, B и CКласс C содержит поле List<B>, класс B содержит поле List<A>