java案列4-3 多彩的声音
时间: 2023-06-01 07:04:28 浏览: 216
这个案例涉及到Java中的音频处理。我们将使用Java Sound API来播放不同的音频文件并操作它们。
首先,我们需要导入Java Sound API库:
```java
import javax.sound.sampled.*;
```
接下来,我们定义一个名为SoundPlayer的类,该类具有两个主要方法:play和stop。play方法将播放音频文件,而stop方法将停止播放。
```java
public class SoundPlayer {
private Clip clip;
public void play(String filename) {
try {
File file = new File(filename);
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file);
clip = AudioSystem.getClip();
clip.open(audioInputStream);
clip.start();
} catch (Exception e) {
System.out.println("Error playing sound: " + e.getMessage());
}
}
public void stop() {
if (clip != null) {
clip.stop();
clip.close();
}
}
}
```
在这个类中,我们使用了Java Sound API中的Clip类。Clip类允许我们播放音频文件,并提供了一些方法用于控制播放,例如start,stop和close。在play方法中,我们首先获取音频文件的输入流,然后使用clip对象打开和播放音频文件。在stop方法中,我们检查clip是否为null,如果不是,则停止和关闭clip。
接下来,我们使用SoundPlayer类来创建一个Java应用程序,该应用程序将播放多个音频文件。
```java
public class Main {
public static void main(String[] args) {
SoundPlayer soundPlayer = new SoundPlayer();
soundPlayer.play("piano.wav");
try {
Thread.sleep(2000); // wait for 2 seconds
} catch (InterruptedException e) {
e.printStackTrace();
}
soundPlayer.stop();
soundPlayer.play("guitar.wav");
try {
Thread.sleep(2000); // wait for 2 seconds
} catch (InterruptedException e) {
e.printStackTrace();
}
soundPlayer.stop();
soundPlayer.play("violin.wav");
try {
Thread.sleep(2000); // wait for 2 seconds
} catch (InterruptedException e) {
e.printStackTrace();
}
soundPlayer.stop();
}
}
```
在这个应用程序中,我们创建了一个SoundPlayer对象,并使用它来播放三个不同的音频文件。在每个音频文件播放之后,我们使用Thread.sleep方法暂停2秒钟,然后调用stop方法停止播放。
要运行此应用程序,我们需要将三个音频文件(piano.wav,guitar.wav和violin.wav)放在与Main.java文件相同的目录中。在运行应用程序时,我们将听到三个不同的乐器的声音。
阅读全文