声音不在 Eclipse 中播放
Sound not playing in Eclipse
这是 class SoundTest 的代码:
package code;
import java.io.File;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
public class SoundTest {
public static void main(String args[])
{
File sound = new File("main//Sounds//open1.wav");
playSound(sound);
}
public static void playSound(File f)
{
try {
File file = f;
if(file.exists())
{
AudioInputStream audio = AudioSystem.getAudioInputStream(file);
Clip clip = AudioSystem.getClip();
clip.open(audio);
clip.start();
//clip.close();
}
else
{
System.out.println("Can't find file");
}
}
catch(Exception e)
{
System.out.println("Didn't work!");
}
}
}
当我 运行 它时,没有错误或异常,而且它从不说 "Can't find file" 或 "Didn't work!"。但我听不到任何声音。我是否必须更改 Eclipse 中的某种设置才能发出声音,或者我做错了什么?我很确定声音文件位于正确的位置。
那不是eclipse的问题。 java 正在打开和播放文件,但即使在音频剪辑完成播放之前,程序也会终止 - 这意味着 java 程序不会等待剪辑完成播放
您的方法缺少一行代码来满足您的需求,请参见下文
Thread.sleep(clip.getMicrosecondLength() / 1000);
因此,添加此行后,您的代码应该如下所示,您将听到您的音乐
AudioInputStream audio = AudioSystem.getAudioInputStream(file);
Clip clip = AudioSystem.getClip();
clip.open(audio);
clip.start();
Thread.sleep(clip.getMicrosecondLength() / 1000);
这是 class SoundTest 的代码:
package code;
import java.io.File;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
public class SoundTest {
public static void main(String args[])
{
File sound = new File("main//Sounds//open1.wav");
playSound(sound);
}
public static void playSound(File f)
{
try {
File file = f;
if(file.exists())
{
AudioInputStream audio = AudioSystem.getAudioInputStream(file);
Clip clip = AudioSystem.getClip();
clip.open(audio);
clip.start();
//clip.close();
}
else
{
System.out.println("Can't find file");
}
}
catch(Exception e)
{
System.out.println("Didn't work!");
}
}
}
当我 运行 它时,没有错误或异常,而且它从不说 "Can't find file" 或 "Didn't work!"。但我听不到任何声音。我是否必须更改 Eclipse 中的某种设置才能发出声音,或者我做错了什么?我很确定声音文件位于正确的位置。
那不是eclipse的问题。 java 正在打开和播放文件,但即使在音频剪辑完成播放之前,程序也会终止 - 这意味着 java 程序不会等待剪辑完成播放
您的方法缺少一行代码来满足您的需求,请参见下文
Thread.sleep(clip.getMicrosecondLength() / 1000);
因此,添加此行后,您的代码应该如下所示,您将听到您的音乐
AudioInputStream audio = AudioSystem.getAudioInputStream(file);
Clip clip = AudioSystem.getClip();
clip.open(audio);
clip.start();
Thread.sleep(clip.getMicrosecondLength() / 1000);