diff options
| author | Zach Jordan <zxjordan5@gmail.com> | 2023-05-02 12:14:27 +0000 | 
|---|---|---|
| committer | Zach Jordan <zxjordan5@gmail.com> | 2023-05-02 12:14:27 +0000 | 
| commit | eb479206025ea3e7941010a65328d66cc2d14438 (patch) | |
| tree | 3fc5b8a65bc150824220a85baa9db8811dc694bc /apcs | |
| parent | bdd459335064391b198aa11ffb8a906b787bcbdf (diff) | |
| download | NPEhero-eb479206025ea3e7941010a65328d66cc2d14438.tar.gz NPEhero-eb479206025ea3e7941010a65328d66cc2d14438.tar.bz2 NPEhero-eb479206025ea3e7941010a65328d66cc2d14438.zip  | |
Update file ShortAudioFilePlayer.java
Diffstat (limited to 'apcs')
| -rw-r--r-- | apcs/ShortAudioFilePlayer.java | 96 | 
1 files changed, 96 insertions, 0 deletions
diff --git a/apcs/ShortAudioFilePlayer.java b/apcs/ShortAudioFilePlayer.java new file mode 100644 index 0000000..5d9a381 --- /dev/null +++ b/apcs/ShortAudioFilePlayer.java @@ -0,0 +1,96 @@ +package test; +//Java program to play audio files. imports file scanning and various  +//methods from the java audio class in order to do so. +import java.io.File; +import java.io.IOException; +  +import javax.sound.sampled.AudioFormat; +import javax.sound.sampled.AudioInputStream; +import javax.sound.sampled.AudioSystem; +import javax.sound.sampled.Clip; +import javax.sound.sampled.DataLine; +import javax.sound.sampled.LineEvent; +import javax.sound.sampled.LineListener; +import javax.sound.sampled.LineUnavailableException; +import javax.sound.sampled.UnsupportedAudioFileException; + +public class AudioFilePlayer implements LineListener +{ +    //indicates whether the playback completes or not +    boolean playCompleted; +    Clip audioClip; +     +    public void play(String audioFilePath) +    { +        File audioFile = new File(audioFilePath); +         +        try +        { +            //creates an audioInput object using the file we +            //declared earlier +            AudioInputStream audioStream = AudioSystem.getAudioInputStream(audioFile); +             +            //gets the format of the audioStream object +            AudioFormat format = audioStream.getFormat(); +             +            DataLine.Info info = new DataLine.Info(Clip.class, format); +             +            audioClip = (Clip) AudioSystem.getLine(info); +  +            audioClip.addLineListener(this); +  +            audioClip.open(audioStream); +              +            audioClip.start(); +              +            while (!playCompleted)  +            { +                // wait for the playback to complete +                try  +                { +                    Thread.sleep(1000); +                }  +                catch (InterruptedException ex)  +                { +                    ex.printStackTrace(); +                } +            }     +            audioClip.close(); //stops the audio clip   +        } +        catch (UnsupportedAudioFileException ex)  +        { +            System.out.println("The specified audio file is not supported."); +            ex.printStackTrace(); +        } +        catch (LineUnavailableException ex)  +        { +            System.out.println("Audio line for playing back is unavailable."); +            ex.printStackTrace(); +        }  +        catch (IOException ex)  +        { +            System.out.println("Error playing the audio file."); +            ex.printStackTrace(); +        } +    } +     +     +    /** +     * Listens to the START and STOP events of the audio line. +     */ +    @Override +    public void update(LineEvent event)  +    { +        LineEvent.Type type = event.getType(); +          +        if (type == LineEvent.Type.START)  +        { +            System.out.println("Playback started.");         +        }  +        else if (type == LineEvent.Type.STOP)  +        { +            playCompleted = true; +            System.out.println("Playback completed."); +        } +    }    +}  | 
