Dieser Artikel teilt den spezifischen Code für Javax.Sound, um eine einfache Audio -Wiedergabe für Ihre Referenz zu realisieren. Der spezifische Inhalt ist wie folgt
/ ** * @see * @Author al_assad [email protected] * @date 17. November 2016 um 18:27:59 PM * @VERSION V1.0 * Beschreibung: Einfacher Audio -Player (nur unterstützt au, ra, wav) * implementieren Sie das Audio -Playback, ohne JMF * */ importieren. import Java.io.*; Public Class MusicPlayer {privat String MusicPath; // Audiodatei private volatile boolean run = true; // zeichnen Sie auf, ob Audio private Thread Mainthread abspielt. // Der Task -Thread zum Abspielen von Audio Private AudioInputStream AudioTream; private Audioformat Audioformat; private so prozentuelle Sourcen -Sourceatalin; Public MusicPlayer (String MusicPath) {this.musicPath = musicPath; Prefetch (); } // Datenvorbereitung private void prefetch () {try {// Audioeingangsstrom -AudioStream = Audiosystem // Erhalten Sie das codierte Objekt von audioFormat = audioTream.getFormat (); // Verpackung von Audioinformationen dataline.info datalineInfo = new Dataline.info (Sourcedataline.Class, AudioFormat, Audiosystem.not_Specified); // Erstellen Sie Quelldatenzeilen mit der Info -Kurs nach dem Wickeln von Audioinformationen und fungieren als Source Sourcedatalin des Mixers = (Sourcedataline) Audiosystem.getline (DatalineInfo); Sourcedataline.open (AudioFormat); Sourcedataline.Start (); } catch (nicht unterstützteDauOFileException ex) {ex.printstacktrace (); } catch (lineUnAVailableException ex) {ex.printstacktrace (); } catch (ioException ex) {ex.printstacktrace (); }} // destructor: Audio -Lese -Stream und Datenlinien geschützt void Finalize () wirft Throwable {super.finalize (); Sourcedataline.Drain (); Sourcedataline.CLOSE (); AudioStream.close (); } // Audio abspielen: Stellen Sie fest, ob private void PlayMusic (boolean Loop) unterbrochen werden soll. }} else {PlayMusic (); // die Datenlinie löschen und die sourceataline schließen.Drain (); Sourcedataline.CLOSE (); AudioStream.close (); }} catch (ioException ex) {ex.printstacktrace (); }} private void PlayMusic () {try {synchronized (this) {run = true; } // Lesen Sie den Audio -Datenstrom über die Datenzeile und senden Sie ihn an den Mixer. // Datenstromübertragungsprozess: AudioInputStream -> Sourcedataline; audioStream = audiosystem.getaugioinputStream (neue Datei (MusicPath)); int Count; Byte Tempbuff [] = neues Byte [1024]; while ((count = audioStream.read (tempbuff, 0, tempbuff.length))! = -1) {synchronisiert (this) {while (! run) wait (); } Sourcedataline.Write (tempbuff, 0, count); }} catch (nicht unterstütztedaudioFileException ex) {ex.printstacktrace (); } catch (ioException ex) {ex.printstacktrace (); } catch (InterruptedException ex) {ex.printstacktrace (); }} // Pause Audio -Wiedergabe private void stopmusic () {synchronisiert (this) {run = false; notifyAll (); }} // MUSIC LETOR MUSIC Private void continuemusic () {synchronisiert (this) {run = true; notifyAll (); }} // externe Anrufsteuerungsmethode: Audio -Haupt -Thread erstellen; public void start (boolean Loop) {mininead = new thread (new Runnable () {public void run () {try {PlayMusic (Loop);} catch (interruptedException e) {e.printstacktrace ();}}); Mainthead.Start (); } // externe Anrufkontrollmethode: Machen Sie den Audio -Thread public void stop () {neuer Thread (new Runnable () {public void run () {stopmusic ();}}). Start (); } // externe Anrufkontrollmethode: Fortsetzung des Audio Thread public void continues () {neuer Thread (new Runnable () {public void run () {continuemusic ();}}). Start (); } // public static void main (string [] args) testen unterbruptedException {musicPlayer player = new MusicPlayer ("BGM/1.WAV"); // Music Player Player Player.Start (True) erstellen; // Die Wiedergabe in einem Schleifenformular starten, spielt Player (False) TimeUnit.Seconds.sleep (5) nicht; Player.Stop (); // Pause Audio Playback TimeUnit.seconds.sleep (4); Player.Continues (); // Beginnen Sie weiterhin Audio}}
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.