在实现音频文件播放的时候遇到问题

xuzhenqinandy 2007-12-03 04:43:05
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.lang.Thread.State;
import java.util.Date;

import sun.audio.AudioData;
import sun.audio.AudioPlayer;
import sun.audio.AudioStream;

public class SoundFile {

public static FileInputStream fileInput = null;

public static AudioStream audio = null;

public static void main(String[] args)
{
String fileName = "E:\\UTPS\\MOBILEPARTNER\\userdata\\SoundFile\\SMSVoice.wav";
try {
fileInput = new FileInputStream(fileName);

audio = new AudioStream(fileInput);

AudioPlayer.player.start(audio);

//停止播放
AudioPlayer.player.stop(audio);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
}
}


用上面的方法可以实现音频文件的播放和停止,但是不知道用什么方法可以得到音频文件是否播放结束。希望位兄弟帮忙解决
...全文
144 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhb_821012 2007-12-05
  • 打赏
  • 举报
回复
这个得自己判断
用添加监就可以吧
千里冰封820 2007-12-04
  • 打赏
  • 举报
回复
用JMF吧,添加监听就可以了
kokobox 2007-12-03
  • 打赏
  • 举报
回复


import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
import java.applet.AudioClip;
//{{{ Declares!
class test {
}
//}}}
public class AudioPlayer
extends Frame {
AudioClip clip = null;
FileDialog dialog = new FileDialog(this);
Label labelCopyright = new Label();
TextField textFieldFileName = new TextField();
Panel panel1 = new Panel();
Button buttonOpen = new Button();
Button buttonPlay = new Button();
Button buttonLoop = new Button();
Button buttonStop = new Button();

public AudioPlayer() {
setTitle("AudioPlayer");
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
}
);
try {
jbInit();
}
catch (Exception e) {
e.printStackTrace();
}
pack();
setVisible(true);
}

private void jbInit() throws Exception {
labelCopyright.setBackground(Color.darkGray);
labelCopyright.setForeground(Color.orange);
labelCopyright.setText(
"Copyright (c) 2003 BeanSoft Studio. All rights reserved.");
this.setTitle("Java Audio Player");
textFieldFileName.setEditable(false);
buttonOpen.setLabel("打开");
buttonOpen.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
buttonOpen_actionPerformed(e);
}
}
);
buttonPlay.setLabel("播放");
buttonPlay.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
play();
}
}
);
buttonLoop.setLabel("循环");
buttonLoop.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
loop();
}
}
);
buttonStop.setLabel("停止");
buttonStop.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
stop();
}
}
);
this.add(labelCopyright, BorderLayout.SOUTH);
this.add(textFieldFileName, BorderLayout.NORTH);
this.add(panel1, BorderLayout.CENTER);
panel1.add(buttonOpen, null);
panel1.add(buttonPlay, null);
panel1.add(buttonLoop, null);
panel1.add(buttonStop, null);
}

public AudioClip getAudioClip() {
return this.clip;
}

public void setAudioClip(AudioClip clip) {
this.clip = clip;
}

public static void main(String args[]) {
new AudioPlayer();
}

void buttonOpen_actionPerformed(ActionEvent e) {
stop();
dialog.show();
if (dialog.getFile() != null) {
String filename = dialog.getDirectory() + dialog.getFile();
try {
setAudioClip(Applet.newAudioClip( (new java.io.File(filename)).toURL()));
}
catch (Exception ex) {
ex.printStackTrace();
}

textFieldFileName.setText(filename);
}
play();
}

void play() {
if (getAudioClip() != null) {
getAudioClip().play();
}
}

void loop() {
if (getAudioClip() != null) {
getAudioClip().loop();
}
}

void stop() {
if (getAudioClip() != null) {
getAudioClip().stop();
}
}
}


62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧