⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 audiocontroler.java

📁 一个JAVA的音频控制的例程
💻 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 + -