用户如何选择音频文件并使用Java播放它
||
我希望能够制作一个GUI或控制台应用程序,在该应用程序中,用户单击一个按钮以从其计算机中选择一个音频文件(具有兼容格式)并可以播放,并且由于我对GUI完全没有经验,所以它将如果可以提示我如何实现暂停和播放按钮,以及音量滑动/拨号和停止按钮,那就太好了。我所知道的是,我将不得不输入
java.io.*
和sun.audio.*
。
编辑
因此,我当前的代码是:
import sun.audio.*; //import the sun.audio package
import java.awt.*;
import java.io.*;
public class Boombox extends Frame implements FilenameFilter {
/**
*
*/
private static final long serialVersionUID = 4914433234899026080L;
Button openButton = new Button(\"Open\");
Button playButton = new Button(\"Play\");
Button loopButton = new Button(\"Loop\");
Button stopButton = new Button(\"Stop\");
Label filename = new Label(\" \");
File theFile = null;
@SuppressWarnings({ \"restriction\" })
AudioData theData = null;
InputStream nowPlaying = null;
@SuppressWarnings({ \"deprecation\" })
public Boombox() {
super(\"Boombox\");
resize(300, 200);
Panel north = new Panel();
north.setLayout(new FlowLayout(FlowLayout.LEFT));
north.add(new Label(\"File: \"));
north.add(\"North\", filename);
add(\"North\", north);
Panel south = new Panel();
south.add(openButton);
south.add(playButton);
south.add(loopButton);
south.add(stopButton);
add(\"South\", south);
}
@SuppressWarnings(\"deprecation\")
public static void main(String[] args) {
Boombox sp = new Boombox();
sp.show();
}
@SuppressWarnings({ \"deprecation\", \"restriction\" })
public void open() {
FileDialog fd = new FileDialog(this, \"Please select a .au file:\");
fd.setFilenameFilter(this);
fd.show();
try {
theFile = new File(fd.getDirectory() + \"/\" + fd.getFile());
if (theFile != null) {
filename.setText(theFile.getName());
FileInputStream fis = new FileInputStream(theFile);
AudioStream as = new AudioStream(fis);
theData = as.getData();
}
}
catch (IOException e) {
System.err.println(e);
}
}
@SuppressWarnings(\"restriction\")
public void play() {
stop();
if (theData == null) open();
if (theData != null) {
AudioDataStream ads = new AudioDataStream(theData);
AudioPlayer.player.start(ads);
nowPlaying = ads;
}
}
@SuppressWarnings(\"restriction\")
public void stop() {
if (nowPlaying != null) {
AudioPlayer.player.stop(nowPlaying);
nowPlaying = null;
}
}
@SuppressWarnings(\"restriction\")
public void loop() {
stop();
if (theData == null) open();
if (theData != null) {
ContinuousAudioDataStream cads = new ContinuousAudioDataStream(theData);
AudioPlayer.player.start(cads);
nowPlaying = cads;
}
}
public boolean action(Event e, Object what) {
if (e.target == playButton) {
play();
return true;
}
else if (e.target == openButton) {
open();
return true;
}
else if (e.target == loopButton) {
loop();
return true;
}
else if (e.target == stopButton) {
stop();
return true;
}
return false;
}
public boolean accept(File dir, String name) {
name = name.toLowerCase();
if (name.endsWith(\".au\")) return true;
if (name.endsWith(\".wav\")) return true;
return false;
}
}
没有找到相关结果
已邀请:
2 个回复
茶鬼失形
样本输入/输出。
恋裂