Повторный аудиоклип не воспроизводится - Java - PullRequest
0 голосов
/ 30 октября 2019

У меня есть запланированный поток, который запускается каждые полсекунды или около того и каждый раз воспроизводит аудиоклип, вызывая stop() для клипа перед каждым циклом, чтобы start() снова:

public AudioThread() {
    Clip clipF5 = AudioSystem.getClip();
    AudioInputStream inputF5 = AudioSystem.getAudioInputStream(Main.class.getResourceAsStream("sound.wav"));
    clipF5.open(inputF5);
}

ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor();

exec.scheduleAtFixedRate(new Runnable() {
    public void run() {
        if (clipF5.isRunning()) { clipF5.stop(); }

        clipF5.start();
    }
}, 1, interval, TimeUnit.MICROSECONDS);

Но он не играет снова после первого раза. Код работает, но звук не воспроизводится. Есть идеи?

1 Ответ

0 голосов
/ 31 октября 2019

Легко исправить!

Вам просто нужно добавить шаг сброса положения носителя. Вы можете сделать это с помощью clip.setFramePosition(0) или clip.setMicrosecondPosition(0), чтобы вернуться к началу клипа. Метод start () просто начинается с последней медиа-позиции, даже если это конец файла.

if (clipF5.isRunning()) 
{
    clipF5.stop(); 
    clipF5.setFramePosition(0);
}

clipF5.start();

Я предполагаю, что длина вашего клипа меньше 30 секунд!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...