Wskazówka Java 24: Jak odtwarzać dźwięk w aplikacjach

Odtwarzanie plików audio w aplikacjach Java nie jest oficjalnie obsługiwane w bieżącej wersji Java. Ale nie bój się, jest sposób! Ta wskazówka pokaże Ci, jak to zrobić - zaczynając od opisu podstawowych kroków związanych z odtwarzaniem klipów audio w apletach Java, a następnie przechodząc do obsługi aplikacji Java.

Odtwarzanie klipów audio w apletach jest dość proste i obejmuje następujące kroki:

  • Utwórz obiekt AudioClip
  • Załaduj plik dźwiękowy .au do AudioClip
  • Odtwarzaj dźwięki raz lub zapętlaj w sposób ciągły
  • Zatrzymaj odtwarzanie

Oto jak wygląda kod tych kroków:

import java.applet. *; AudioClip ac = getAudioClip (getCodeBase (), soundFile); ac.play (); // zagraj raz ac.stop (); // przestań grać ac.loop (); // graj w sposób ciągły

Wydawałoby się logiczne, aby użyć tego samego kodu do odtwarzania klipów audio w aplikacji Java. Niestety, jeśli to zrobisz, otrzymasz błędy od kompilatora. Czemu? Ponieważ AudioClipobiekt i getAudioClip()metoda są częścią pakietu java.applet - i nie są częścią aplikacji. Dobra wiadomość jest taka, że ​​możemy zanurkować i sami naprawić sytuację.

Sztuczka w rozwiązaniu tego problemu polega na użyciu pewnych nieudokumentowanych funkcji, które są dostarczane przez firmę Sun w jego JDK. Biorąc okiem wewnątrz classes.zip pliku z Sun JDK (za pomocą dowolnego z różnych narzędzi zipfile), znajdujemy nie tylko standard Java pakiety, takie jak java.applet ale także sun.audio . (Znajdują się one w katalogu sun / audio).

Sun.audio Pakiet zawiera wszystko, czego potrzebujemy, aby móc odtwarzać pliki audio! Oto kod:

import sun.audio. *; // zaimportuj pakiet sun.audio import java.io. *; // ** dodaj to odpowiednio do kodu aplikacji // Otwórz strumień wejściowy do pliku audio. InputStream in = new FileInputStream (nazwa pliku); // Utwórz obiekt AudioStream ze strumienia wejściowego. AudioStream as = new AudioStream (in); // Użyj statycznego elementu klasy „player” z klasy AudioPlayer, aby odtworzyć // klip. AudioPlayer.player.start (as); // Podobnie, aby zatrzymać dźwięk. AudioPlayer.player.stop (as);

Aby użyć adresu URL jako źródła strumienia audio, zastąp następujące ustawienia dla strumienia wejściowego i konfiguracji strumienia audio:

AudioStream as = new AudioStream (url.openStream ()); 

Ciągłe odtwarzanie strumienia audio zwiększa nieco złożoność:

// Utwórz strumień audio zgodnie z wcześniejszym opisem. // Utwórz źródło AudioData. AudioData data = as.getData (); // Utwórz ContinuousAudioDataStream. ContinuousAudioDataStream cas = new ContinuousAudioDataStream (dane); // Odtwórz dźwięk. AudioPlayer.player.play (cas); // Podobnie, aby zatrzymać dźwięk. AudioPlayer.player.stop (cas);

I masz to. Pamiętaj, ta technika wykorzystuje nieudokumentowane funkcje; nie ma gwarancji, że będzie działać z czymkolwiek poza obecnym Sun JDK.

Chong Ser Wah jest konsultantem w Competency Center for Java w Singapurze. Sprawdź konkurs Java Cup w centrum.

Ta historia „Java Tip 24: Jak odtwarzać dźwięk w aplikacjach” została pierwotnie opublikowana przez JavaWorld.