Java Съвет 24: Как да възпроизвеждате аудио в приложения

Възпроизвеждането на аудио файлове в приложения на 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.