/** * Plays a file once. * * @param file The <code>File</code> to be played. */ public void playOnce(File file) { if (getMixer() == null) return; // Fail faster. try { soundPlayerThread.add(getAudioInputStream(file)); soundPlayerThread.awaken(); } catch (Exception e) { logger.log(Level.WARNING, "Unable to play: " + file.getName(), e); } }
/** * Creates a sound player. * * @param mixerOption The option for setting the mixer to use. * @param volumeOption The volume option to use when playing audio. */ public SoundPlayer(AudioMixerOption mixerOption, PercentageOption volumeOption) { setMixer(mixerOption.getValue()); if (mixer == null) { throw new IllegalStateException("Mixer unavailable."); } mixerOption.addPropertyChangeListener( new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent e) { setMixer((MixerWrapper) e.getNewValue()); } }); setVolume(volumeOption.getValue()); volumeOption.addPropertyChangeListener( new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent e) { setVolume((Integer) e.getNewValue()); } }); soundPlayerThread = new SoundPlayerThread(); soundPlayerThread.start(); }
/** Stops the current sound. */ public void stop() { soundPlayerThread.stopPlaying(); soundPlayerThread.awaken(); }