Кратчайшая форма (без необходимости установки случайных библиотек)?
public static void play(String filename)
{
try
{
Clip clip = AudioSystem.getClip();
clip.open(AudioSystem.getAudioInputStream(new File(filename)));
clip.start();
}
catch (Exception exc)
{
exc.printStackTrace(System.out);
}
}
Единственная проблема в том, что нет хорошего способа сделать этот метод блокирующим для закрытия и удаления данных после завершения * .wav.
clip.drain()
говорит, что это блокировка, но это не так. Клип не работает RIGHT AFTER start()
.
Единственный работающий, но Гадкий способ, который я нашел:
// ...
clip.start();
while (!clip.isRunning())
Thread.sleep(10);
while (clip.isRunning())
Thread.sleep(10);
clip.close();