Java 类javax.sound.sampled.LineEvent 实例源码

项目:meico    文件:MeicoApp.java   
/**
 * playback start method extended by some gui stuff
 */
@Override
public void play() {
    try {
        super.play();
    } catch (LineUnavailableException | IOException e) {
        e.printStackTrace();
    }
    panel[2].setText("\u25A0");
    panel[2].setBackground(new Color(232, 232, 232));

    // listen to the audioClip and when it is finished playing, trigger the stop() method to clean up and reset the button
    LineListener listener = new LineListener() {
        public void update(LineEvent event) {
            if (event.getType() == LineEvent.Type.STOP) {
                stop();
            }
        }
    };
    this.getAudioClip().addLineListener(listener);
}
项目:OpenJSharp    文件:AbstractLine.java   
/**
 * This method sets the open state and generates
 * events if it changes.
 */
final void setOpen(boolean open) {

    if (Printer.trace) Printer.trace("> "+getClass().getName()+" (AbstractLine): setOpen(" + open + ")  this.open: " + this.open);

    boolean sendEvents = false;
    long position = getLongFramePosition();

    synchronized (this) {
        if (this.open != open) {
            this.open = open;
            sendEvents = true;
        }
    }

    if (sendEvents) {
        if (open) {
            sendEvents(new LineEvent(this, LineEvent.Type.OPEN, position));
        } else {
            sendEvents(new LineEvent(this, LineEvent.Type.CLOSE, position));
        }
    }
    if (Printer.trace) Printer.trace("< "+getClass().getName()+" (AbstractLine): setOpen(" + open + ")  this.open: " + this.open);
}
项目:jdk8u-jdk    文件:AbstractLine.java   
/**
 * This method sets the open state and generates
 * events if it changes.
 */
final void setOpen(boolean open) {

    if (Printer.trace) Printer.trace("> "+getClass().getName()+" (AbstractLine): setOpen(" + open + ")  this.open: " + this.open);

    boolean sendEvents = false;
    long position = getLongFramePosition();

    synchronized (this) {
        if (this.open != open) {
            this.open = open;
            sendEvents = true;
        }
    }

    if (sendEvents) {
        if (open) {
            sendEvents(new LineEvent(this, LineEvent.Type.OPEN, position));
        } else {
            sendEvents(new LineEvent(this, LineEvent.Type.CLOSE, position));
        }
    }
    if (Printer.trace) Printer.trace("< "+getClass().getName()+" (AbstractLine): setOpen(" + open + ")  this.open: " + this.open);
}
项目:openjdk-jdk10    文件:AbstractDataLine.java   
/**
 * This method sets the started state and generates
 * events if it changes.
 */
final void setStarted(boolean started) {

    if (Printer.trace) Printer.trace("> AbstractDataLine: setStarted(" + started + ")");

    boolean sendEvents = false;
    long position = getLongFramePosition();

    synchronized (this) {

        if (this.started != started) {
            this.started = started;
            sendEvents = true;
        }
    }

    if (sendEvents) {

        if (started) {
            sendEvents(new LineEvent(this, LineEvent.Type.START, position));
        } else {
            sendEvents(new LineEvent(this, LineEvent.Type.STOP, position));
        }
    }
    if (Printer.trace) Printer.trace("< AbstractDataLine: setStarted completed");
}
项目:openjdk-jdk10    文件:AbstractLine.java   
/**
 * This method sets the open state and generates
 * events if it changes.
 */
final void setOpen(boolean open) {

    if (Printer.trace) Printer.trace("> "+getClass().getName()+" (AbstractLine): setOpen(" + open + ")  this.open: " + this.open);

    boolean sendEvents = false;
    long position = getLongFramePosition();

    synchronized (this) {
        if (this.open != open) {
            this.open = open;
            sendEvents = true;
        }
    }

    if (sendEvents) {
        if (open) {
            sendEvents(new LineEvent(this, LineEvent.Type.OPEN, position));
        } else {
            sendEvents(new LineEvent(this, LineEvent.Type.CLOSE, position));
        }
    }
    if (Printer.trace) Printer.trace("< "+getClass().getName()+" (AbstractLine): setOpen(" + open + ")  this.open: " + this.open);
}
项目:openjdk-jdk10    文件:IsRunningHang.java   
private static void test(final AudioFormat format, final byte[] data)
        throws Exception {
    final Line.Info info = new DataLine.Info(Clip.class, format);
    final Clip clip = (Clip) AudioSystem.getLine(info);

    go = new CountDownLatch(1);
    clip.addLineListener(event -> {
        if (event.getType().equals(LineEvent.Type.START)) {
            go.countDown();
        }
    });

    clip.open(format, data, 0, data.length);
    clip.start();
    go.await();
    while (clip.isRunning()) {
        // This loop should not hang
    }
    while (clip.isActive()) {
        // This loop should not hang
    }
    clip.close();
}
项目:openjdk-jdk10    文件:ClipLinuxCrash2.java   
public void update(LineEvent e) {
    if (e.getType() == LineEvent.Type.STOP) {
        stopOccured++;
        out("  Test program: receives STOP event for clip="+clip.toString()+" no."+stopOccured);
        out("  Test program: Calling close() in event dispatcher thread");
        clip.close();
        synchronized (lock) {
            lock.notifyAll();
        }
    }
    else if (e.getType() == LineEvent.Type.CLOSE) {
        out("  Test program: receives CLOSE event for "+clip.toString());
        synchronized (lock) {
            lock.notifyAll();
        }
    }
    else if (e.getType() == LineEvent.Type.START) {
        out("  Test program: receives START event for "+clip.toString());
    }
    else if (e.getType() == LineEvent.Type.OPEN) {
        out("  Test program: receives OPEN event for "+clip.toString());
    }
}
项目:Mafia    文件:AudioClip.java   
public void playAudio(float volumeDelta) {
    boolean isPlaying = false;

    if(clip != null)
        if(clip.isActive())
            isPlaying = true;


    if(!shouldPreloadAudio && !isPlaying) {
        loadClip();

        clip.addLineListener((LineEvent event) -> {
            if(event.getType() == LineEvent.Type.STOP)
                clip.close();
        });
    }


    float newVolume = Math.max(Math.min(volumeAdjustment + volumeDelta, volume.getMaximum()), volume.getMinimum());
    volume.setValue(newVolume);

    clip.setFramePosition(0);
    clip.start();
}
项目:SimpleAudio    文件:BufferedAudio.java   
@Override
public void open() throws AudioException {

    try {

        this.audioInputStream = Audio.getAudioInputStream(this.resource);
        this.clip = AudioSystem.getClip();
        this.clip.open(this.audioInputStream);
        this.clip.addLineListener(event -> {

            if(event.getType().equals(LineEvent.Type.STOP) && this.clip.getMicrosecondPosition() >= this.clip.getMicrosecondLength()) {

                this.trigger(AudioEvent.Type.REACHED_END);
            }
        });
        this.controls = AbstractAudio.extractControls(this.clip, this.controls);
        this.open = true;
        this.trigger(AudioEvent.Type.OPENED);

    } catch(Exception exception) {

        throw new AudioException(exception);
    }
}
项目:openjdk9    文件:AbstractLine.java   
/**
 * This method sets the open state and generates
 * events if it changes.
 */
final void setOpen(boolean open) {

    if (Printer.trace) Printer.trace("> "+getClass().getName()+" (AbstractLine): setOpen(" + open + ")  this.open: " + this.open);

    boolean sendEvents = false;
    long position = getLongFramePosition();

    synchronized (this) {
        if (this.open != open) {
            this.open = open;
            sendEvents = true;
        }
    }

    if (sendEvents) {
        if (open) {
            sendEvents(new LineEvent(this, LineEvent.Type.OPEN, position));
        } else {
            sendEvents(new LineEvent(this, LineEvent.Type.CLOSE, position));
        }
    }
    if (Printer.trace) Printer.trace("< "+getClass().getName()+" (AbstractLine): setOpen(" + open + ")  this.open: " + this.open);
}
项目:jdk8u_jdk    文件:AbstractLine.java   
/**
 * This method sets the open state and generates
 * events if it changes.
 */
final void setOpen(boolean open) {

    if (Printer.trace) Printer.trace("> "+getClass().getName()+" (AbstractLine): setOpen(" + open + ")  this.open: " + this.open);

    boolean sendEvents = false;
    long position = getLongFramePosition();

    synchronized (this) {
        if (this.open != open) {
            this.open = open;
            sendEvents = true;
        }
    }

    if (sendEvents) {
        if (open) {
            sendEvents(new LineEvent(this, LineEvent.Type.OPEN, position));
        } else {
            sendEvents(new LineEvent(this, LineEvent.Type.CLOSE, position));
        }
    }
    if (Printer.trace) Printer.trace("< "+getClass().getName()+" (AbstractLine): setOpen(" + open + ")  this.open: " + this.open);
}
项目:lookaside_java-1.8.0-openjdk    文件:AbstractLine.java   
/**
 * This method sets the open state and generates
 * events if it changes.
 */
final void setOpen(boolean open) {

    if (Printer.trace) Printer.trace("> "+getClass().getName()+" (AbstractLine): setOpen(" + open + ")  this.open: " + this.open);

    boolean sendEvents = false;
    long position = getLongFramePosition();

    synchronized (this) {
        if (this.open != open) {
            this.open = open;
            sendEvents = true;
        }
    }

    if (sendEvents) {
        if (open) {
            sendEvents(new LineEvent(this, LineEvent.Type.OPEN, position));
        } else {
            sendEvents(new LineEvent(this, LineEvent.Type.CLOSE, position));
        }
    }
    if (Printer.trace) Printer.trace("< "+getClass().getName()+" (AbstractLine): setOpen(" + open + ")  this.open: " + this.open);
}
项目:neo    文件:Audio.java   
/**
 * <strong><em>playSound</em></strong><br /><br />
 * 
 * &emsp;Plays a .wav audio file located in /res/audio/.<br />
 * &emsp;<em>E.g.</em> <sub>audio</sub><br /><br />
 * &emsp;File location would be: <sub>/res/audio/audio.wav</sub><br />
 * &emsp;and would be played automatically.
 * 
 * @param audio - File name.
 */
public void playSound(String audio){
    try{
        AudioInputStream audioInputStream =
            AudioSystem.getAudioInputStream(
                 getClass().getResource("/audio/"+audio+".wav"));
        Clip clip = AudioSystem.getClip();
        clip.open(audioInputStream);
        clip.start();
        clip.addLineListener(new LineListener() {

            @Override
            public void update(LineEvent arg0) {
                if(arg0.getFramePosition()==clip.getFrameLength()){
                    clip.close();
                }
            }
        });
        clips.put(audio, clip);
    }catch(Exception e){
        e.printStackTrace();
    }
}
项目:WorldGrower    文件:Sound.java   
private Clip openClip(boolean closeAfterPlaying) throws UnsupportedAudioFileException, IOException, LineUnavailableException {
    AudioInputStream audioStream = AudioSystem.getAudioInputStream(new ByteArrayInputStream(audioFilePath));
    DataLine.Info info = getLineInfo(audioStream);
    Clip audioClip = (Clip) AudioSystem.getLine(info);

    if (closeAfterPlaying) {
        audioClip.addLineListener(new LineListener() {
            @Override
            public void update(LineEvent myLineEvent) {
                if (myLineEvent.getType() == LineEvent.Type.STOP)
                    audioClip.close();
            }
        });
    }

    audioClip.open(audioStream);
    return audioClip;
}
项目:MakamBox    文件:Player.java   
public void setPlayer(Wavefile af) throws Exception{
    clip = af.getClip();
       clip.open();
       fullLength = clip.getFrameLength();
       endPoint = fullLength;
       gainControl = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
       playing = false;
       clip.addLineListener(new LineListener(){
        @Override
        public void update(LineEvent arg0) {
            while(playing){
                int tempframe = clip.getFramePosition();
                MakamBoxAnalysis.positionSlide.setValue(tempframe);
                if (stopbutton!=null&&tempframe == fullLength){
                    stopbutton.doClick();
                } else if(stopbutton!=null && tempframe>=endPoint){
                    playAgain();
                } else if (tempframe == fullLength){
                    stop();
                }
            }
        }
       });
}
项目:infobip-open-jdk-8    文件:AbstractLine.java   
/**
 * This method sets the open state and generates
 * events if it changes.
 */
final void setOpen(boolean open) {

    if (Printer.trace) Printer.trace("> "+getClass().getName()+" (AbstractLine): setOpen(" + open + ")  this.open: " + this.open);

    boolean sendEvents = false;
    long position = getLongFramePosition();

    synchronized (this) {
        if (this.open != open) {
            this.open = open;
            sendEvents = true;
        }
    }

    if (sendEvents) {
        if (open) {
            sendEvents(new LineEvent(this, LineEvent.Type.OPEN, position));
        } else {
            sendEvents(new LineEvent(this, LineEvent.Type.CLOSE, position));
        }
    }
    if (Printer.trace) Printer.trace("< "+getClass().getName()+" (AbstractLine): setOpen(" + open + ")  this.open: " + this.open);
}
项目:jdk8u-dev-jdk    文件:AbstractLine.java   
/**
 * This method sets the open state and generates
 * events if it changes.
 */
final void setOpen(boolean open) {

    if (Printer.trace) Printer.trace("> "+getClass().getName()+" (AbstractLine): setOpen(" + open + ")  this.open: " + this.open);

    boolean sendEvents = false;
    long position = getLongFramePosition();

    synchronized (this) {
        if (this.open != open) {
            this.open = open;
            sendEvents = true;
        }
    }

    if (sendEvents) {
        if (open) {
            sendEvents(new LineEvent(this, LineEvent.Type.OPEN, position));
        } else {
            sendEvents(new LineEvent(this, LineEvent.Type.CLOSE, position));
        }
    }
    if (Printer.trace) Printer.trace("< "+getClass().getName()+" (AbstractLine): setOpen(" + open + ")  this.open: " + this.open);
}
项目:txtUML    文件:UI.java   
private void playSirenSound() {
    try {
        File soundFile = new File(sirenFile);
        AudioInputStream soundIn = AudioSystem.getAudioInputStream(soundFile);
        AudioFormat format = soundIn.getFormat();
        DataLine.Info info = new DataLine.Info(Clip.class, format);
        clip = (Clip) AudioSystem.getLine(info);
        clip.addLineListener(new LineListener() {
            @Override
            public void update(LineEvent event) {
                if (event.getType() == LineEvent.Type.STOP) {
                    soundOn = false;
                }
            }
        });
        clip.open(soundIn);
        clip.start();
        soundOn = true;
    } catch (Exception e) {
        e.printStackTrace();
    }
}
项目:jdk7-jdk    文件:AbstractLine.java   
/**
 * This method sets the open state and generates
 * events if it changes.
 */
protected void setOpen(boolean open) {

    if (Printer.trace) Printer.trace("> "+getClass().getName()+" (AbstractLine): setOpen(" + open + ")  this.open: " + this.open);

    boolean sendEvents = false;
    long position = getLongFramePosition();

    synchronized (this) {
        if (this.open != open) {
            this.open = open;
            sendEvents = true;
        }
    }

    if (sendEvents) {
        if (open) {
            sendEvents(new LineEvent(this, LineEvent.Type.OPEN, position));
        } else {
            sendEvents(new LineEvent(this, LineEvent.Type.CLOSE, position));
        }
    }
    if (Printer.trace) Printer.trace("< "+getClass().getName()+" (AbstractLine): setOpen(" + open + ")  this.open: " + this.open);
}
项目:openjdk-source-code-learn    文件:AbstractLine.java   
/**
 * This method sets the open state and generates
 * events if it changes.
 */
protected void setOpen(boolean open) {

    if (Printer.trace) Printer.trace("> "+getClass().getName()+" (AbstractLine): setOpen(" + open + ")  this.open: " + this.open);

    boolean sendEvents = false;
    long position = getLongFramePosition();

    synchronized (this) {
        if (this.open != open) {
            this.open = open;
            sendEvents = true;
        }
    }

    if (sendEvents) {
        if (open) {
            sendEvents(new LineEvent(this, LineEvent.Type.OPEN, position));
        } else {
            sendEvents(new LineEvent(this, LineEvent.Type.CLOSE, position));
        }
    }
    if (Printer.trace) Printer.trace("< "+getClass().getName()+" (AbstractLine): setOpen(" + open + ")  this.open: " + this.open);
}
项目:OLD-OpenJDK8    文件:AbstractLine.java   
/**
 * This method sets the open state and generates
 * events if it changes.
 */
final void setOpen(boolean open) {

    if (Printer.trace) Printer.trace("> "+getClass().getName()+" (AbstractLine): setOpen(" + open + ")  this.open: " + this.open);

    boolean sendEvents = false;
    long position = getLongFramePosition();

    synchronized (this) {
        if (this.open != open) {
            this.open = open;
            sendEvents = true;
        }
    }

    if (sendEvents) {
        if (open) {
            sendEvents(new LineEvent(this, LineEvent.Type.OPEN, position));
        } else {
            sendEvents(new LineEvent(this, LineEvent.Type.CLOSE, position));
        }
    }
    if (Printer.trace) Printer.trace("< "+getClass().getName()+" (AbstractLine): setOpen(" + open + ")  this.open: " + this.open);
}
项目:maryspeak    文件:Process.java   
private void playAudio(AudioInputStream audio)
    {
        LineListener lineListener = new LineListener() 
        {
            public void update(LineEvent event) 
            {
                if (event.getType() == LineEvent.Type.START) { Log.print(Log.DEBUG,"Audio started playing."); }
                else if (event.getType() == LineEvent.Type.STOP) { Log.print(Log.DEBUG,"Audio stopped playing."); } 
                else if (event.getType() == LineEvent.Type.OPEN) { Log.print(Log.DEBUG,"Audio line opened."); } 
                else if (event.getType() == LineEvent.Type.CLOSE) { Log.print(Log.DEBUG,"Audio line closed."); }
            }
        };

        AudioPlayer ap = new AudioPlayer(audio, lineListener);
        ap.start();
}
项目:crowdpp    文件:AudioPlay.java   
public void update(LineEvent event) {
    if (event.getType() == LineEvent.Type.OPEN) {
        // start the line, init the buffer
        line.start();

        int bytes = line.getBufferSize();
        byteBuf = new byte [bytes];
        doubleBuf = new double [bytes / af.getFrameSize()];
        fs = af.getFrameSize();

        lineOpened = true;
    } else if (event.getType() == LineEvent.Type.START) {
        // nothing to do here
    } else if (event.getType() == LineEvent.Type.STOP) {
        line.close();
    } else if (event.getType() == LineEvent.Type.CLOSE) {
        // only free the line now
        lineOpened = false;
    } else
        System.err.println("Unknown LineEvent: " + event.getType());

}
项目:crowdpp    文件:RawCapturer.java   
@Override
public void update(LineEvent le) {      
    if (!le.getLine().equals(line))
        return;

    System.err.println(new Date() + ": RawCapturer.update: " + le);

    if (le.getType() == LineEvent.Type.START){
        System.err.println("RawCapturer.update: notifyStart()");
        notifyStart();
    }
    else if (le.getType() == LineEvent.Type.STOP){
        System.err.println("RawCapturer.update: notifyStop()");
        stopped = true;
        notifyStop();                       
    }
}
项目:Sistemas-Multimedia    文件:VentanaInternaGrabador.java   
public VentanaInternaGrabador(final File f) {
    initComponents();

    recorder = new SMSoundPlayerRecorder(f);
    this.setTitle(f.getName());
    LineListener lineListener = new LineListener() {
        @Override
        public void update(LineEvent event) {
            if (event.getType() == Type.START) {
                recorderButton.setEnabled(false);
                stopButton.setEnabled(true);
            }
            if (event.getType() == Type.STOP) {
                recorderButton.setEnabled(true);
                stopButton.setEnabled(false);
                VentanaInternaReproductor vir = new VentanaInternaReproductor(f);
                VentanaPrincipal.getEscritorio().add(vir);
                vir.setVisible(true);
            }

        }
    };
    ((SMSoundPlayerRecorder) recorder).setLineListener(lineListener);
    this.pack();
}
项目:Sistemas-Multimedia    文件:VentanaInternaReproductor.java   
public VentanaInternaReproductor(File f) {
    initComponents();

    player = new SMSoundPlayerRecorder(f);
    this.setTitle(f.getName());
    LineListener lineListener = new LineListener() {
        @Override
        public void update(LineEvent event) {
            if (event.getType() == Type.START) {
                play.setEnabled(false);
                stop.setEnabled(true);
            }
            if (event.getType() == Type.STOP) {
                play.setEnabled(true);
                play.setSelected(false);
                stop.setEnabled(false);
            }
        }
    };
    ((SMSoundPlayerRecorder)player).setLineListener(lineListener);
    this.pack();
}
项目:Sistemas-Multimedia    文件:VentanaInternaGrabador.java   
public VentanaInternaGrabador() {
    initComponents();
    exist=true;
    recorder = new SMSoundPlayerRecorder(new File("nuevo"));
    LineListener lineListener = new LineListener() {
        @Override
        public void update(LineEvent event) {
            if (event.getType() == Type.START) {
                recorderButton.setEnabled(false);
                stopButton.setEnabled(true);
            }
            if (event.getType() == Type.STOP) {
                recorderButton.setEnabled(true);
                stopButton.setEnabled(false);
            }

        }
    };
    ((SMSoundPlayerRecorder) recorder).setLineListener(lineListener);
    this.pack();
}
项目:Sistemas-Multimedia    文件:VentanaInternaReproductor.java   
public VentanaInternaReproductor(File f) {
    initComponents();
    if (f != null) {
        player = new SMSoundPlayer(f);
        this.setTitle(f.getName());
        LineListener lineListener = new LineListener() {
            @Override
            public void update(LineEvent event) {
                if (event.getType() == Type.START) {
                    play.setEnabled(false);
                    stop.setEnabled(true);
                }
                if (event.getType() == Type.STOP) {
                    play.setEnabled(true);
                    play.setSelected(false);
                    stop.setEnabled(false);
                }
            }
        };
        ((SMSoundPlayer) player).setLineListener(lineListener);
        this.pack();
    }
}
项目:openjdk-jdk7u-jdk    文件:AbstractLine.java   
/**
 * This method sets the open state and generates
 * events if it changes.
 */
final void setOpen(boolean open) {

    if (Printer.trace) Printer.trace("> "+getClass().getName()+" (AbstractLine): setOpen(" + open + ")  this.open: " + this.open);

    boolean sendEvents = false;
    long position = getLongFramePosition();

    synchronized (this) {
        if (this.open != open) {
            this.open = open;
            sendEvents = true;
        }
    }

    if (sendEvents) {
        if (open) {
            sendEvents(new LineEvent(this, LineEvent.Type.OPEN, position));
        } else {
            sendEvents(new LineEvent(this, LineEvent.Type.CLOSE, position));
        }
    }
    if (Printer.trace) Printer.trace("< "+getClass().getName()+" (AbstractLine): setOpen(" + open + ")  this.open: " + this.open);
}
项目:openjdk-icedtea7    文件:AbstractLine.java   
/**
 * This method sets the open state and generates
 * events if it changes.
 */
final void setOpen(boolean open) {

    if (Printer.trace) Printer.trace("> "+getClass().getName()+" (AbstractLine): setOpen(" + open + ")  this.open: " + this.open);

    boolean sendEvents = false;
    long position = getLongFramePosition();

    synchronized (this) {
        if (this.open != open) {
            this.open = open;
            sendEvents = true;
        }
    }

    if (sendEvents) {
        if (open) {
            sendEvents(new LineEvent(this, LineEvent.Type.OPEN, position));
        } else {
            sendEvents(new LineEvent(this, LineEvent.Type.CLOSE, position));
        }
    }
    if (Printer.trace) Printer.trace("< "+getClass().getName()+" (AbstractLine): setOpen(" + open + ")  this.open: " + this.open);
}
项目:revert    文件:ClipInfo.java   
public void update(LineEvent lineEvent)
/* Called when the clip's line detects open, close, start, or
   stop events. The watcher (if one exists) is notified.
*/
{
  // when clip is stopped / reaches its end
  if (lineEvent.getType() == LineEvent.Type.STOP) {
    // System.out.println("update() STOP for " + name);
    clip.stop();
    clip.setFramePosition(0);  // NEW
    if (!isLooping) {  // it isn't looping
      if (watcher != null)
        watcher.atSequenceEnd(name, SoundsWatcher.STOPPED);
    }
    else {      // else play it again
      clip.start();
      if (watcher != null)
        watcher.atSequenceEnd(name, SoundsWatcher.REPLAYED);
    }
  }
}
项目:Amber-IDE    文件:JSAudio.java   
JSAudio(AudioInputStream as) throws LineUnavailableException, IOException {
    Mixer mix = AudioIO.findMixer(as.getFormat());
    clip = (Clip) (mix != null ? mix.getLine(new Line.Info(Clip.class)) : AudioSystem.getLine(new Line.Info(Clip.class)));
    clip.open(as);
    clip.addLineListener(new LineListener() {
        public void update(LineEvent event) {
            if (loop && event.getType() == Type.STOP) {
                EventQueue.invokeLater(new Runnable() {
                    public void run() {
                        clip.start();
                    }
                });
            }
        }
    });
}
项目:ripme    文件:Utils.java   
public static void playSound(String filename) {
    URL resource = ClassLoader.getSystemClassLoader().getResource(filename);
    try {
        final Clip clip = (Clip) AudioSystem.getLine(new Line.Info(Clip.class));
        clip.addLineListener(event -> {
            if (event.getType() == LineEvent.Type.STOP) {
                clip.close();
            }
        });
        clip.open(AudioSystem.getAudioInputStream(resource));
        clip.start();
    } catch (Exception e) {
        logger.error("Failed to play sound " + filename, e);
    }
}
项目:Lunar    文件:Sound.java   
@Override
public void update(LineEvent event) {
    LineEvent.Type type = event.getType();
    if (type == LineEvent.Type.STOP) {
        clip.close();
    }
}
项目:romanov    文件:JSAudioRecordingClip.java   
JSAudioRecordingClip(Clip clip, AudioMetaData mdata)
{
    c = clip;
    // because Clip doesn't give access to the loop count
    // we just loop it ourselves by triggering off of a STOP event
    c.addLineListener( new LineListener()
    {
        public void update(LineEvent event)
        {
            if ( event.getType().equals( LineEvent.Type.STOP ) )
            {
                if ( playing && loopCount != 0 )
                {
                    c.setMicrosecondPosition( 0 );
                    c.start();
                    if ( loopCount > 0 )
                    {
                        loopCount--;
                    }
                }
                else
                {
                    playing = false;
                }
            }
        }
    } );
    playing = false;
    loopCount = 0;
    meta = mdata;
}
项目:POPBL_V    文件:ClipPlayer.java   
@Override
public void update(LineEvent e) {
    String eventType = e.getType().toString();
    if (eventType.equalsIgnoreCase(References.START)) {
        References.KEYLISTENER_PANEL.setClipON(true);
        References.CHRONOMETER.start();
    } else if (eventType.equalsIgnoreCase(References.STOP)) {
        if (!pause) {
            stop();
        } else {
            References.CHRONOMETER.pause();
        }
    }
}
项目:OpenJSharp    文件:AbstractDataLine.java   
/**
 * This method sets the started state and generates
 * events if it changes.
 */
final void setStarted(boolean started) {

    if (Printer.trace) Printer.trace("> AbstractDataLine: setStarted(" + started + ")");

    boolean sendEvents = false;
    long position = getLongFramePosition();

    synchronized (this) {

        //if (Printer.debug) Printer.debug("    AbstractDataLine: setStarted: this.started: " + this.started);
        //if (Printer.debug) Printer.debug("                                  started: " + started);

        if (this.started != started) {
            this.started = started;
            sendEvents = true;
        }
    }

    //if (Printer.debug) Printer.debug("                                  this.started: " + this.started);
    //if (Printer.debug) Printer.debug("                                  sendEvents: " + sendEvents);

    if (sendEvents) {

        if (started) {
            sendEvents(new LineEvent(this, LineEvent.Type.START, position));
        } else {
            sendEvents(new LineEvent(this, LineEvent.Type.STOP, position));
        }
    }
    if (Printer.trace) Printer.trace("< AbstractDataLine: setStarted completed");
}
项目:OpenJSharp    文件:SoftMixingDataLine.java   
final void sendEvent(LineEvent event) {
    if (listeners.size() == 0)
        return;
    LineListener[] listener_array = listeners
            .toArray(new LineListener[listeners.size()]);
    for (LineListener listener : listener_array) {
        listener.update(event);
    }
}
项目:OpenJSharp    文件:SoftMixingMixer.java   
private void sendEvent(LineEvent event) {
    if (listeners.size() == 0)
        return;
    LineListener[] listener_array = listeners
            .toArray(new LineListener[listeners.size()]);
    for (LineListener listener : listener_array) {
        listener.update(event);
    }
}
项目:jdk8u-jdk    文件:AbstractDataLine.java   
/**
 * This method sets the started state and generates
 * events if it changes.
 */
final void setStarted(boolean started) {

    if (Printer.trace) Printer.trace("> AbstractDataLine: setStarted(" + started + ")");

    boolean sendEvents = false;
    long position = getLongFramePosition();

    synchronized (this) {

        //if (Printer.debug) Printer.debug("    AbstractDataLine: setStarted: this.started: " + this.started);
        //if (Printer.debug) Printer.debug("                                  started: " + started);

        if (this.started != started) {
            this.started = started;
            sendEvents = true;
        }
    }

    //if (Printer.debug) Printer.debug("                                  this.started: " + this.started);
    //if (Printer.debug) Printer.debug("                                  sendEvents: " + sendEvents);

    if (sendEvents) {

        if (started) {
            sendEvents(new LineEvent(this, LineEvent.Type.START, position));
        } else {
            sendEvents(new LineEvent(this, LineEvent.Type.STOP, position));
        }
    }
    if (Printer.trace) Printer.trace("< AbstractDataLine: setStarted completed");
}