📄 audiocontroler.java
字号:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.URL;
import java.net.URLConnection;
import javax.sound.sampled.AudioFileFormat;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.CompoundBorder;
import javax.swing.border.EmptyBorder;
import javax.swing.border.SoftBevelBorder;
public class AudioControler extends JPanel implements ActionListener {
private JButton playB, captB, pausB, loadB;
private JButton auB, aiffB, waveB;
private String fileName = "/temp/test.wav";
private String url = "http://localhost:8080/Meeting/AudioUpLoadServlet";
private String ringName ="";
public String getRingName() {
return ringName;
}
public void setRingName(String ringName) {
this.ringName = ringName;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
private String owner = "";
public String getOwner() {
return owner;
}
public void setOwner(String owner) {
this.owner = owner;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
private File file = new File(fileName);
private AudioRecorder recorder = new AudioRecorder(file);
final int bufSize = 16384;
private JLabel ringNameLabel = new JLabel("语音名:");
private JTextField ringNameText = new JTextField();
public AudioControler() {
setLayout(new BorderLayout());
EmptyBorder eb = new EmptyBorder(5, 5, 5, 5);
SoftBevelBorder sbb = new SoftBevelBorder(SoftBevelBorder.LOWERED);
setBorder(new EmptyBorder(5, 5, 5, 5));
JPanel mainP = new JPanel();
JPanel buttonsPanel = new JPanel();
buttonsPanel.setBorder(new EmptyBorder(10, 0, 5, 0));
//ringNameText.setText();
ringNameText.setSize(50, 20);
ringNameText.setPreferredSize(new Dimension(90,30));
playB = addButton("回放", buttonsPanel, false);
captB = addButton("录音", buttonsPanel, true);
pausB = addButton("暂停", buttonsPanel, false);
JPanel saveBpanel = new JPanel();
// auB = addButton("Save AU", saveBpanel, false);
// aiffB = addButton("Save AIFF", saveBpanel, false);
buttonsPanel.add(ringNameLabel);
buttonsPanel.add(ringNameText);
waveB = addButton("保存", buttonsPanel, false);
mainP.add(buttonsPanel);
mainP.add(saveBpanel);
add(mainP);
}
private JButton addButton(String name, JPanel p, boolean state) {
JButton b = new JButton(name);
b.addActionListener(this);
b.setEnabled(state);
p.add(b);
return b;
}
public void actionPerformed(ActionEvent e) {
Object obj = e.getSource();
if (obj.equals(captB)) {
if (captB.getText().startsWith("录音")) {
file = null;
recorder.start();
// fileName = "c;";
// loadB.setEnabled(false);
playB.setEnabled(false);
pausB.setEnabled(true);
// auB.setEnabled(false);
// aiffB.setEnabled(false);
waveB.setEnabled(false);
captB.setText("停止");
} else {
// lines.removeAllElements();
recorder.stop();
// loadB.setEnabled(true);
playB.setEnabled(true);
pausB.setEnabled(false);
// auB.setEnabled(true);
// aiffB.setEnabled(true);
waveB.setEnabled(true);
captB.setText("录音");
}
} else if (obj.equals(waveB)) {
recorder.saveToFile(fileName, AudioFileFormat.Type.WAVE);
upload();
} else if (obj.equals(playB)) {
new Player(recorder.getAudioInputStream()).start();
}
}
public static void main(String s[]) {
AudioControler controler = new AudioControler();
// controler.open();
JFrame f = new JFrame("AudioControl");
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
f.getContentPane().add("Center", controler);
f.pack();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int w = 720;
int h = 90;
f.setLocation(screenSize.width / 2 - w / 2, screenSize.height / 2 - h
/ 2);
f.setSize(w, h);
f.show();
}
public void upload() {
String data = "";
ringName = ringNameText.getText();
System.out.println("ringName:"+ ringName);
System.out.println("owner" + owner);
if (null!=ringName && !"".equals(ringName)) {
if (ringName.indexOf(".wav") != -1) {
data=ringName;
} else {
data = ringName.trim()+".wav";
}
} else {
return;
}
long fileLength = 0;
try {
URL server = new URL(url + "?filename=" + data +"&username=" + owner);
URLConnection con = server.openConnection();
con.setDoInput(true);
con.setDoOutput(true);
con.setUseCaches(true);
con.setDefaultUseCaches(false);
String path = "/test.wav";
File file = new File(path);
fileLength = file.length(); // 34278057
System.out.println("fileLength" + fileLength);
sendServletObject(con, path);
getServletObject(con);
} catch (Exception e) {
System.out.println(e.toString());
}
}
private void getServletObject(URLConnection con) throws IOException {
ObjectInputStream ins = new ObjectInputStream(con.getInputStream());
//System.out.println("message " + ins.readUTF());
ins.close();
}
private void sendServletObject(URLConnection con, String path)
throws IOException {
FileInputStream fis = null;
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
byte[] buf = new byte[4096];
int len = 0, totalBytes = 0;
int rate = -1;
int length = 0;
try {
bos = new BufferedOutputStream(con.getOutputStream());
fis = new FileInputStream(path);
bis = new BufferedInputStream(fis);
while ((len = bis.read(buf)) != -1) {
totalBytes += len;
bos.write(buf, 0, len);
length = length + rate;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bis != null) {
bis.close();
}
if (fis != null) {
fis.close();
}
if (bos != null) {
bos.flush();
bos.close();
}
buf = null;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -