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);
}
}
}
java类javax.sound.sampled.LineEvent的实例源码
ClipInfo.java 文件源码
项目:revert
阅读 17
收藏 0
点赞 0
评论 0
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");
}