Úvod do Java Sound API
Java Sound API je výkonná sada nástrojů navržená tak, aby poskytovala podporu zvuku na všech platformách. Dodává se s Java Development Kit (JDK) a umožňuje vývojářům přehrávat, nahrávat a zpracovávat zvukové soubory v různých formátech. V tomto článku se zaměříme na základy přehrávání zvuku v Java aplikacích pomocí tříd AudioClip a AudioSystem, které jsou součástí Java Sound API.
Rozhraní Java Sound API lze rozdělit do dvou hlavních balíčků: javax.sound.sampled a javax.sound.midi . Balíček sampled se používá ke správě základních zvukových funkcí, jako je přehrávání, nahrávání a syntéza zvukových dat, zatímco balíček midi je určen pro správu hudebních skladeb a soundtracků založených na MIDI.
Přehrávání zvuků pomocí AudioClip
Nejprve se podívejme na to, jak přehrávat zvukové soubory pomocí rozhraní AudioClip , které je součástí balíčku java.applet . Ačkoli bylo rozhraní AudioClip původně vytvořeno pro applety, je stále relevantní a užitečné pro přehrávání malých zvukových souborů v aplikacích Java.
import java.applet.AudioClip;
import java.net.URL;
public class SoundPlayer {
public static void main(String[] args) {
AudioClip sound;
URL soundURL = SoundPlayer.class.getResource("sound.wav");
sound = java.applet.Applet.newAudioClip(soundURL);
sound.play();
}
}
Ve výše uvedeném úryvku kódu jsme importovali rozhraní AudioClip a třídu URL . Tyto třídy nám umožňují načíst zvukový zdroj a přehrát ho pomocí metody play() instance AudioClip. Chcete-li použít AudioClip, ujistěte se, že soubor „sound.wav“ je umístěn ve stejném adresáři jako váš soubor Java, nebo zadejte správnou cestu k souboru.
Pokud však pracujete s většími zvukovými soubory nebo potřebujete sofistikovanější kontrolu nad přehráváním, nemusí být rozhraní AudioClip dostatečné a měli byste zvážit použití třídy AudioSystem.
Přehrávání zvuků pomocí třídy AudioSystem
Třída AudioSystem je součástí balíčku javax.sound.sampled a poskytuje pokročilejší možnosti přehrávání zvuku. Následující příklad ukazuje, jak přehrát zvukový soubor pomocí třídy AudioSystem:
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import java.io.File;
import java.io.IOException;
public class SoundPlayer {
public static void main(String[] args) {
try {
File soundFile = new File("sound.wav");
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(soundFile);
Clip clip = AudioSystem.getClip();
clip.open(audioInputStream);
clip.start();
// Keep the application running till the sound is played completely
Thread.sleep(clip.getMicrosecondLength() / 1000);
} catch(LineUnavailableException | UnsupportedAudioFileException | IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
V tomto příkladu jsme nejprve importovali požadované třídy a rozhraní z balíčku javax.sound.sampled . Poté jsme vytvořili objekt AudioInputStream pro čtení zvukových dat ze souboru a instanci Clip pro uchovávání zvukových dat v paměti. Po otevření klipu jsme zavolali metodu start() pro přehrání zvuku.
Tento přístup poskytuje větší kontrolu nad přehráváním zvuku, včetně možnosti pozastavit, obnovit, opakovat a zastavit zvuk, takže je vhodný pro širokou škálu aplikací.
Abych to shrnul, probrali jsme dva různé přístupy k přehrávání zvuků v Javě pomocí tříd AudioClip a AudioSystem. Rozhraní AudioClip je vhodné pro malé zvukové soubory v jednoduchých aplikacích, zatímco třída AudioSystem nabízí pokročilé možnosti přehrávání zvuku pro složitější scénáře. Využití výkonných knihoven Java zajišťuje bezproblémovou funkčnost zvuku a lepší uživatelský zážitek v různých aplikacích.