Προγραμματισμός

Java Tip 24: Τρόπος αναπαραγωγής ήχου σε εφαρμογές

Η αναπαραγωγή αρχείων ήχου σε εφαρμογές Java δεν υποστηρίζεται επίσημα στην τρέχουσα έκδοση του Java. Αλλά μην φοβάστε, υπάρχει τρόπος! Αυτή η συμβουλή θα σας δείξει πώς - ξεκινώντας από μια περιγραφή των βασικών βημάτων που απαιτούνται για την αναπαραγωγή κλιπ ήχου σε μικροεφαρμογές Java και στη συνέχεια μετάβαση στην υποστήριξη εφαρμογών Java.

Η αναπαραγωγή κλιπ ήχου σε μικροεφαρμογές είναι αρκετά απλή και περιλαμβάνει τα ακόλουθα βήματα:

  • Δημιουργήστε ένα αντικείμενο AudioClip
  • Φόρτωση αρχείου ήχου .au στο AudioClip
  • Παίξτε ήχους μία φορά ή συνεχώς
  • Διακοπή αναπαραγωγής

Δείτε πώς φαίνεται ο κώδικας για αυτά τα βήματα:

εισαγωγή java.applet. *; AudioClip ac = getAudioClip (getCodeBase (), soundFile); ac.play (); // παίξτε μια φορά ac.stop (); // σταματήστε να παίζετε ac.loop (); // παίξτε συνεχώς 

Φαίνεται λογικό να χρησιμοποιείτε τον ίδιο κωδικό για αναπαραγωγή κλιπ ήχου σε μια εφαρμογή Java. Δυστυχώς, αν το κάνετε αυτό, θα λάβετε σφάλματα από τον μεταγλωττιστή. Γιατί; Επειδή η Κλιπ ήχου αντικείμενο και το getAudioClip () μέθοδος είναι μέρος του java.applet πακέτο - και δεν αποτελούν μέρος των εφαρμογών. Τα καλά νέα είναι ότι μπορούμε να βυθίσουμε και να κάνουμε τα πράγματα να λειτουργήσουν.

Το κόλπο για την επίλυση αυτού του προβλήματος είναι να χρησιμοποιήσετε μερικά χωρίς έγγραφα χαρακτηριστικά που παρέχονται από την Sun στο JDK της. Ρίξτε μια ματιά μέσα στο class.zip αρχείο από το Sun JDK (χρησιμοποιώντας οποιοδήποτε από τα διάφορα βοηθητικά προγράμματα zipfile), δεν βρίσκουμε μόνο τα τυπικά πακέτα Java όπως java.applet αλλά επίσης sun.audio. (Αυτά βρίσκονται στον κατάλογο sun / audio.)

ο sun.audio Το πακέτο περιέχει όλα όσα χρειαζόμαστε για να μπορούμε να παίξουμε κλιπ ήχου! Εδώ είναι ο κωδικός:

εισαγωγή sun.audio. *; // εισαγωγή του πακέτου sun.audio εισαγωγή java.io. *; // ** προσθέστε το στον κωδικό της εφαρμογής σας ανάλογα με την περίπτωση // Ανοίξτε μια ροή εισόδου στο αρχείο ήχου. InputStream σε = νέο FileInputStream (Όνομα αρχείου); // Δημιουργήστε ένα αντικείμενο AudioStream από τη ροή εισόδου. AudioStream as = νέο AudioStream (σε); // Χρησιμοποιήστε το στατικό μέλος της κατηγορίας "player" από την κλάση AudioPlayer για αναπαραγωγή // κλιπ. AudioPlayer.player.start (ως); // Ομοίως, για να σταματήσετε τον ήχο. AudioPlayer.player.stop (ως); 

Για να χρησιμοποιήσετε μια διεύθυνση 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 Cup του κέντρου.

Αυτή η ιστορία, "Java Tip 24: Πώς να παίξετε ήχο σε εφαρμογές" δημοσιεύθηκε αρχικά από το JavaWorld.