Petua Java 24: Cara memainkan audio dalam aplikasi

Memainkan fail audio dalam aplikasi Java tidak disokong secara rasmi dalam keluaran Java sekarang. Tetapi jangan takut, ada jalan! Petua ini akan menunjukkan kepada anda bagaimana - bermula dengan penerangan tentang langkah-langkah dasar yang terlibat dalam memainkan klip audio di applet Java dan kemudian beralih ke sokongan aplikasi Java.

Memainkan klip audio dalam applet agak mudah dan melibatkan langkah-langkah berikut:

  • Buat objek Klip Audio
  • Muatkan fail suara .au ke AudioClip
  • Mainkan bunyi sekali atau gelung secara berterusan
  • Hentikan main balik

Begini rupa kod untuk langkah-langkah ini:

import java.applet. *; AudioClip ac = getAudioClip (getCodeBase (), soundFile); ac.play (); // main sekali ac.stop (); // berhenti bermain ac.loop (); // bermain secara berterusan

Nampaknya logik untuk menggunakan kod yang sama untuk memainkan klip audio dalam aplikasi Java. Malangnya, jika anda melakukannya, anda akan mendapat kesilapan dari penyusun. Kenapa? Kerana AudioClipobjek dan getAudioClip()kaedahnya adalah sebahagian dari paket java.applet - dan bukan sebahagian dari aplikasi. Berita baiknya ialah kita dapat menyelam dan membuat sesuatu berjalan lancar.

Caranya untuk menyelesaikan masalah ini adalah dengan menggunakan beberapa ciri tanpa dokumen yang disediakan oleh Sun dalam JDKnya. Mengintip fail class.zip dari Sun JDK (menggunakan mana-mana pelbagai utiliti zipfile), kami tidak hanya menemui pakej Java standard seperti java.applet tetapi juga sun.audio . (Ini ada di direktori sun / audio.)

The sun.audio pakej mengandungi semua yang kita perlukan untuk dapat memainkan klip audio! Inilah kodnya:

import sun.audio. *; // import pakej sun.audio import java.io. *; // ** tambahkan ini ke dalam kod aplikasi anda sesuai // Buka aliran input ke file audio. InputStream in = FileInputStream baru (Nama Fail); // Buat objek AudioStream dari aliran input. AudioStream sebagai = AudioStream baru (dalam); // Gunakan "pemain" ahli kelas statik dari AudioPlayer kelas untuk memainkan // klip. AudioPlayer.player.start (seperti); // Begitu juga, untuk menghentikan audio. AudioPlayer.player.stop (as);

Untuk menggunakan URL sebagai sumber aliran audio, ganti yang berikut untuk penyediaan aliran input dan aliran audio:

AudioStream sebagai = AudioStream baru (url.openStream ()); 

Memainkan aliran audio secara berterusan menambahkan sedikit kerumitan:

// Buat aliran audio seperti yang dibincangkan sebelumnya. // Buat sumber AudioData. Data AudioData = as.getData (); // Buat ContinuousAudioDataStream. ContinuousAudioDataStream cas = ContinuousAudioDataStream baru (data); // Mainkan audio. AudioPlayer.player.play (cas); // Begitu juga, untuk menghentikan audio. AudioPlayer.player.stop (cas);

Dan di sana anda memilikinya. Ingat, teknik ini menggunakan ciri tidak berdokumen; tidak ada jaminan bahawa ia akan berfungsi dengan apa pun kecuali Sun JDK semasa.

Chong Ser Wah adalah perunding di Pusat Kompetensi Java di Singapura. Lihat Pertandingan Piala Java pusat.

Kisah ini, "Petua Java 24: Cara memainkan audio dalam aplikasi" awalnya diterbitkan oleh JavaWorld.