Възпроизвеждането на аудио файлове в приложения на Java не се поддържа официално в текущата версия на Java. Но не се страхувайте, има начин! Този съвет ще ви покаже как - като започнете с описание на основните стъпки, свързани с възпроизвеждането на аудио клипове в Java аплети и след това преминете към поддръжката на Java приложения.
Възпроизвеждането на аудио клипове в аплети е съвсем просто и включва следните стъпки:
- Създайте обект AudioClip
- Заредете звуковия файл .au в AudioClip
- Възпроизвеждане на звуци веднъж или цикъл непрекъснато
- Спиране на възпроизвеждането
Ето как изглежда кодът за тези стъпки:
импортиране на java.applet. *; AudioClip ac = getAudioClip (getCodeBase (), soundFile); ac.play (); // пускане веднъж ac.stop (); // спрете да играете ac.loop (); // играе непрекъснато
Изглежда логично да използваме същия този код за възпроизвеждане на аудио клипове в Java приложение. За съжаление, ако го направите, ще получите грешки от компилатора. Защо? Тъй като AudioClip
обектът и getAudioClip()
методът са част от пакета java.applet - и не са част от приложения. Добрата новина е, че можем сами да се потопим и да накараме нещата да работят.
Трикът за решаване на този проблем е да се използват някои документи без документи, които се предоставят от Sun в неговия JDK. Надниквайки във файла classes.zip от Sun JDK (използвайки някоя от различните помощни програми на zipfile), ние намираме не само стандартните Java пакети като java.applet, но и sun.audio . (Те са в директорията sun / audio.)
Пакетът sun.audio съдържа всичко необходимо за възпроизвеждане на аудио клипове! Ето кода:
внос sun.audio. *; // импортиране на пакета sun.audio import java.io. *; // ** добавете това в кода на приложението си, както е подходящо // Отворете входен поток към аудио файла. InputStream в = нов FileInputStream (име на файл); // Създаване на AudioStream обект от входния поток. AudioStream as = нов AudioStream (в); // Използвайте статичния член на класа "player" от клас AudioPlayer за възпроизвеждане // клип. AudioPlayer.player.start (като); // По същия начин, за да спре звука. AudioPlayer.player.stop (as);
За да използвате URL като източник на аудио поток, заменете следното за настройка на входния поток и аудио потока:
AudioStream as = нов AudioStream (url.openStream ());
Непрекъснатото възпроизвеждане на аудио потока добавя малко повече сложност:
// Създаване на аудио поток, както беше обсъдено по-рано. // Създаване на източник на AudioData. AudioData данни = as.getData (); // Създаване на ContinuousAudioDataStream. ContinuousAudioDataStream cas = нов ContinuousAudioDataStream (данни); // Възпроизвеждане на аудио. AudioPlayer.player.play (cas); // По същия начин, за да спре звука. AudioPlayer.player.stop (cas);
И ето го. Не забравяйте, че тази техника използва недокументирани функции; няма гаранции, че ще работи с каквото и да е, освен със сегашния Sun JDK.
Chong Ser Wah е консултант в Центъра за компетентност за Java в Сингапур. Вижте състезанието за купата Java в центъра.Тази история, „Java Съвет 24: Как се възпроизвежда аудио в приложения“, първоначално е публикувана от JavaWorld.