Java Sound API 音频播放代码解析:无事件监听与处理

以下代码使用Java Sound API实现了简单的音频播放功能,代码中定义了名为Sound的类,包含加载、播放音频文件的功能。

package cn.tedu.bird;

import javax.sound.sampled.*;

public class Sound {
	byte[] data;
	AudioFormat format;
	int length;
	
	public Sound(String name) throws Exception  {
		AudioInputStream in = 
				AudioSystem.getAudioInputStream(
						getClass().getResource(name));
		format = in.getFormat();
		length = (int)in.getFrameLength();
		data = new byte[length];
		in.read(data);
		in.close();
	}
	public void play(){
		Runnable runner = new Runnable(){
			public void run() {
				try {
					Clip clip = AudioSystem.getClip();
					clip.open(format, data, 0, length);
					clip.start();
					clip.drain();
					clip.stop();
					clip.close();
				} catch (LineUnavailableException e) {
					e.printStackTrace();
				}
			}
		};

		new Thread(runner).start();
	}
}

代码功能解析

  1. 加载音频文件Sound 类构造函数接收文件名作为参数,通过 AudioSystem.getAudioInputStream() 方法加载音频文件,并获取音频格式、长度以及音频数据。
  2. 播放音频文件play() 方法创建 Runnable 线程,在线程中使用 Clip 对象进行音频播放。

代码中没有事件监听与处理

代码中没有使用事件监听和处理机制。音频播放过程是同步的,代码直接调用 clip.start() 方法开始播放,并不会监听音频播放过程中的任何事件。

总结

以上代码展示了使用 Java Sound API 进行简单音频播放的功能。代码中没有涉及事件监听和处理机制,如果需要监听音频播放过程中的事件(例如播放完成、播放进度等),需要使用 Clip 对象的 addLineListener() 方法添加监听器,并在监听器中处理相应的事件。

Java Sound API 音频播放代码解析:无事件监听与处理

原文地址: http://www.cveoy.top/t/topic/fYgu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录