У меня проблема с воспроизведением звука в Java с использованием интерфейса Clip .
Воспроизведение звука работает с использованием:
clip = (Clip)mixer.getLine(dataLineInfo);
clip.open(audioFormat, byteData, 0, byteData.length);
clip.start();
Однако, если клипы не закрыты, возникает утечка памяти.
Я попытался добавить слушатель строки перед запуском клипа и использовал следующий код:
public void update(LineEvent e) {
if (e.getType() == LineEvent.Type.STOP) {
e.getLine().close();
Однако это приводит к ухудшению звука.
Добавление 1 секунды сна в метод заставляет все работать снова на моей машине - но я бы предпочел более элегантное решение - я не думаю, что ожидание в методе слушателя является хорошей практикой, и другие машины могут занять больше времени. *
Странно, что событие остановки отправляется за произвольное время до остановки звука.
У кого-нибудь есть идеи, как лучше решить эту проблему?
(относится к это , это и это , но ни одно из них не является для меня решением)