java类javax.sound.sampled.LineEvent的实例源码

ClipInfo.java 文件源码 项目:revert 阅读 17 收藏 0 点赞 0 评论 0
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);
    }
  }
}
JSAudio.java 文件源码 项目:Amber-IDE 阅读 22 收藏 0 点赞 0 评论 0
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();
                    }
                });
            }
        }
    });
}
Utils.java 文件源码 项目:ripme 阅读 31 收藏 0 点赞 0 评论 0
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);
    }
}
Sound.java 文件源码 项目:Lunar 阅读 26 收藏 0 点赞 0 评论 0
@Override
public void update(LineEvent event) {
    LineEvent.Type type = event.getType();
    if (type == LineEvent.Type.STOP) {
        clip.close();
    }
}
JSAudioRecordingClip.java 文件源码 项目:romanov 阅读 23 收藏 0 点赞 0 评论 0
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;
}
ClipPlayer.java 文件源码 项目:POPBL_V 阅读 20 收藏 0 点赞 0 评论 0
@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();
        }
    }
}
AbstractDataLine.java 文件源码 项目:OpenJSharp 阅读 24 收藏 0 点赞 0 评论 0
/**
 * 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");
}
SoftMixingDataLine.java 文件源码 项目:OpenJSharp 阅读 25 收藏 0 点赞 0 评论 0
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);
    }
}
SoftMixingMixer.java 文件源码 项目:OpenJSharp 阅读 22 收藏 0 点赞 0 评论 0
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);
    }
}
AbstractDataLine.java 文件源码 项目:jdk8u-jdk 阅读 20 收藏 0 点赞 0 评论 0
/**
 * 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");
}


问题


面经


文章

微信
公众号

扫码关注公众号