No Sound. Help! 可是 annoyingFile和annoying都不为null 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 参考一下:(我也没有用过)希望能对你有帮助! AudioClip接口播放循环停止恢复和播放声音最简单的方法是通过Applet类的play()方法。调用play()方法有如下二种方式: play()-带有一个参数,一个 URL对象,装载并演奏储存在 URL处的声音片断。play()-带有二个参数,基本 URL和文件夹路径名,装载并演奏声音文件。第一参数经常是对getCodeBase()或 getDocumentBase()的调用。 下列代码片断举例说明了直接播放 hello.au的方法。AU文件与小应用程序位于相同文件夹或目录。play(getCodeBase(), "hello.au");play()一旦被调用立刻开始恢复和播放声音。如果声音文件不能被查找,将不会有出错信息,仅仅是沉默。启动和停止声音文件,或循环播放,你必须用 applet的 getAudioClip方法把它装载进入 AudioClip对象,类似上面play()方法的参数,getAudioClip方法要用一个或两个参数,当作播放的指示。 第一个或唯一的一个参数是 URL参数,用来指示声音文件的位置,第二参数是文件夹路径指针。 下列代码行举例说明加载声音文件进入剪贴对象: AudioClip co = getAudioClip(getCodeBase(), "horns.wav");getAudioClip()方法仅仅能被applet内调用。随着JAVA2的引入,应用程序也能用Applet类的newAudioClip方法装入声音文件。前一例子可以改写如下以用于Java应用程序:AudioClip co = newAudioClip("horns.wav");在你已创建 AudioClip对象之后,你能用该对象调用play()、loop()以及stop()方法。如果 getAudioClip或 newAudioClip方法不能找到指定的声音文件, AudioClip对象的值将是空的。试着播放空对象会导致出错,所以标准的过程首先是对该条件进行检测。接下来是一个完整的程序设计示例,该程序将产生一个applet,当鼠标在该小应用程序applet范围内按下时会播放 flute+hrn+mrmba.au音乐样本。此AU示例文件与applet在相同目录或文件夹下的。import java.applet.*;import java.awt.event.*;public class PlayAudio extends Appletimplements MouseListener {AudioClip audio;public void init() {audio = getAudioClip(getDocumentBase(),"flute+hrn+mrmba.au");addMouseListener(this);}public void mousePressed(MouseEvent evt) {if (audio != null) audio.play();}public void mouseEntered (MouseEvent me) {}public void mouseExited (MouseEvent me) {}public void mouseClicked (MouseEvent me) {}public void mouseReleased(MouseEvent me) {}}注意: 在许多JAVA2技术书籍中,mouseDown()方法确实是JAVA 1.0事件模型的一部分。使用该方法会有一定的危险,因为该方法在将来可能不会被支持。在JAVA2平台下将MouseListener与mousePressed结合使用是优先的选择。 还是不行,一点声音都没有。有谁碰过类似的问题吗?还有,如果换成下面的代码设置成Application就可以发声,但是在一个applet中引用它又不行了,说是不支持的文件格式。自己刚刚入门,希望能得到版主和各位的帮助,谢谢。package Sounds;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.sound.midi.*;import javax.sound.sampled.*;import java.io.File;import java.io.InputStream;import java.io.FileInputStream;import java.io.BufferedInputStream;import java.util.Vector;import java.net.URL;public class SoundThrd extends Thread implements LineListener, MetaEventListener{ URL fName; Sequencer sequencer; boolean midiEOM, audioEOM; Synthesizer synthesizer; Object currentSound; boolean bump; public SoundThrd(URL fileName) { fName=fileName; } public void open() { try { sequencer = MidiSystem.getSequencer(); } catch (Exception ex) { ex.printStackTrace(); return; } sequencer.addMetaEventListener(this); } public void close() { if (sequencer != null) { sequencer.close(); } } public boolean loadSound(Object object) { if (object instanceof URL) { try { currentSound = AudioSystem.getAudioInputStream((URL) object); } catch(Exception e) { e.printStackTrace(); currentSound = null; return false; } } // user pressed stop or changed tabs while loading if (sequencer == null) { currentSound = null; return false; } if (currentSound instanceof AudioInputStream) { try { AudioInputStream stream = (AudioInputStream) currentSound; AudioFormat format = stream.getFormat(); /** * we can't yet open the device for ALAW/ULAW playback, * convert ALAW/ULAW to PCM */ if ((format.getEncoding() == AudioFormat.Encoding.ULAW) || (format.getEncoding() == AudioFormat.Encoding.ALAW)) { AudioFormat tmp = new AudioFormat( AudioFormat.Encoding.PCM_SIGNED, format.getSampleRate(), format.getSampleSizeInBits() * 2, format.getChannels(), format.getFrameSize() * 2, format.getFrameRate(), true); stream = AudioSystem.getAudioInputStream(tmp, stream); format = tmp; } DataLine.Info info = new DataLine.Info( Clip.class, stream.getFormat(), ((int) stream.getFrameLength() * format.getFrameSize())); Clip clip = (Clip) AudioSystem.getLine(info); clip.addLineListener(this); clip.open(stream); currentSound = clip; } catch (Exception ex) { ex.printStackTrace(); currentSound = null; return false; } } return true; } public void playSound() { midiEOM = audioEOM = bump = false; if (currentSound instanceof Clip) { Clip clip = (Clip) currentSound; clip.start(); try {sleep(99); } catch (Exception e) { } while ((clip.isActive()) && !bump) { try { sleep(99); } catch (Exception e) {break;} } clip.stop(); clip.close(); } currentSound = null; } public void update(LineEvent event) { if (event.getType() == LineEvent.Type.STOP) { audioEOM = true; } } public void meta(MetaMessage message) { if (message.getType() == 47) { // 47 is end of track midiEOM = true; } } public void run() { int i=1; do { if( loadSound(fName) == true ) { playSound(); } i++; } while (i<10); currentSound = null; } public static void main(String args[]) { URL tmp=null; try{ tmp=new URL("file:///D:/bong.wav"); }catch(Exception e){}; final SoundThrd snd=new SoundThrd(tmp); snd.open(); JFrame f = new JFrame("Sound Box"); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { snd.close(); System.exit(0); } }); f.pack(); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); int w = 750; int h = 340; f.setSize(w, h); f.setVisible(true); snd.run() ; }} applet中的代码: try{ snd=new SoundThrd(new URL("http://192.168.49.49:8080/sound/msg.wav"));//上面的url是有效的 snd.open(); }catch(Exception e){ System.out.print("NoSoundFound"); };snd.start();一点声音都没有?是不是跟applet的限制有关? 结账,发现有些wav文件能播放,有些不能,真是很faint了,我用了oicq的msg.wav就不行,说不支持该文件的格式,最后用jdk1.3.1中的javasound例子中带的bong.wav,就可以发声了,真真是faint到死。同是wav,还有不同的版本的?谁能说说? 谁来帮我讲解一下这道题~~~谢谢 java初学者 向大人们求教 高手进来看看! 编译时的小问题...可能是系统的..高手请进 文件乱码求助 寻求即时聊天软件(如QQ)的开发思路(来者有分) 在线送分!!!!!!!! 急,在等待!!!! override 和 overload 有什么区别? 考大家一个问题:java函数调用是传值还是传引用。答对者有分。 有mobileset3的朋友,帮忙上传一下,给分的 服务器端用Java调用一个ActiveX Dll组件,能行吗?办法呢?
循环
停止恢复和播放声音最简单的方法是通过Applet类的play()方法。调用play()方法有如下二种方式: play()-带有一个参数,一个 URL对象,装载并演奏储存在 URL处的声音片断。play()-带有二个参数,基本 URL和文件夹路径名,装载并演奏声音文件。第一参数经常是对getCodeBase()或 getDocumentBase()的调用。 下列代码片断举例说明了直接播放 hello.au的方法。AU文件与小应用程序位于相同文件夹或目录。play(getCodeBase(), "hello.au");play()一旦被调用立刻开始恢复和播放声音。如果声音文件不能被查找,将不会有出错信息,仅仅是沉默。
启动和停止声音文件,或循环播放,你必须用 applet的 getAudioClip方法把它装载进入 AudioClip对象,类似上面play()方法的参数,getAudioClip方法要用一个或两个参数,当作播放的指示。 第一个或唯一的一个参数是 URL参数,用来指示声音文件的位置,第二参数是文件夹路径指针。 下列代码行举例说明加载声音文件进入剪贴对象: AudioClip co = getAudioClip(getCodeBase(), "horns.wav");getAudioClip()方法仅仅能被applet内调用。随着JAVA2的引入,应用程序也能用Applet类的newAudioClip方法装入声音文件。前一例子可以改写如下以用于Java应用程序:AudioClip co = newAudioClip("horns.wav");在你已创建 AudioClip对象之后,你能用该对象调用play()、loop()以及stop()方法。如果 getAudioClip或 newAudioClip方法不能找到指定的声音文件, AudioClip对象的值将是空的。试着播放空对象会导致出错,所以标准的过程首先是对该条件进行检测。
接下来是一个完整的程序设计示例,该程序将产生一个applet,当鼠标在该小应用程序applet范围内按下时会播放 flute+hrn+mrmba.au音乐样本。此AU示例文件与applet在相同目录或文件夹下的。import java.applet.*;
import java.awt.event.*;public class PlayAudio extends Applet
implements MouseListener {
AudioClip audio;public void init() {
audio = getAudioClip(getDocumentBase(),
"flute+hrn+mrmba.au");
addMouseListener(this);
}public void mousePressed(MouseEvent evt) {
if (audio != null) audio.play();
}public void mouseEntered (MouseEvent me) {
}public void mouseExited (MouseEvent me) {
}public void mouseClicked (MouseEvent me) {
}public void mouseReleased(MouseEvent me) {
}}注意: 在许多JAVA2技术书籍中,mouseDown()方法确实是JAVA 1.0事件模型的一部分。使用该方法会有一定的危险,因为该方法在将来可能不会被支持。在JAVA2平台下将MouseListener与mousePressed结合使用是优先的选择。
有谁碰过类似的问题吗?
还有,如果换成下面的代码设置成Application就可以发声,
但是在一个applet中引用它又不行了,说是不支持的文件格式。
自己刚刚入门,希望能得到版主和各位的帮助,谢谢。package Sounds;import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.sound.midi.*;
import javax.sound.sampled.*;
import java.io.File;
import java.io.InputStream;
import java.io.FileInputStream;
import java.io.BufferedInputStream;
import java.util.Vector;
import java.net.URL;public class SoundThrd extends Thread implements LineListener, MetaEventListener
{ URL fName;
Sequencer sequencer;
boolean midiEOM, audioEOM;
Synthesizer synthesizer;
Object currentSound;
boolean bump;
public SoundThrd(URL fileName) {
fName=fileName;
}
public void open() {
try {
sequencer = MidiSystem.getSequencer();
} catch (Exception ex) { ex.printStackTrace(); return; }
sequencer.addMetaEventListener(this);
}
public void close() {
if (sequencer != null) {
sequencer.close();
}
} public boolean loadSound(Object object) {
if (object instanceof URL) {
try {
currentSound = AudioSystem.getAudioInputStream((URL) object);
} catch(Exception e) {
e.printStackTrace();
currentSound = null;
return false;
}
}
// user pressed stop or changed tabs while loading
if (sequencer == null) {
currentSound = null;
return false;
} if (currentSound instanceof AudioInputStream) {
try {
AudioInputStream stream = (AudioInputStream) currentSound;
AudioFormat format = stream.getFormat();
/**
* we can't yet open the device for ALAW/ULAW playback,
* convert ALAW/ULAW to PCM
*/
if ((format.getEncoding() == AudioFormat.Encoding.ULAW) ||
(format.getEncoding() == AudioFormat.Encoding.ALAW))
{
AudioFormat tmp = new AudioFormat(
AudioFormat.Encoding.PCM_SIGNED,
format.getSampleRate(),
format.getSampleSizeInBits() * 2,
format.getChannels(),
format.getFrameSize() * 2,
format.getFrameRate(),
true);
stream = AudioSystem.getAudioInputStream(tmp, stream);
format = tmp;
}
DataLine.Info info = new DataLine.Info(
Clip.class,
stream.getFormat(),
((int) stream.getFrameLength() *
format.getFrameSize()));
Clip clip = (Clip) AudioSystem.getLine(info);
clip.addLineListener(this);
clip.open(stream);
currentSound = clip;
} catch (Exception ex) {
ex.printStackTrace();
currentSound = null;
return false;
}
} return true;
} public void playSound() {
midiEOM = audioEOM = bump = false;
if (currentSound instanceof Clip) {
Clip clip = (Clip) currentSound;
clip.start();
try {sleep(99); } catch (Exception e) { }
while ((clip.isActive()) && !bump) {
try { sleep(99); } catch (Exception e) {break;}
}
clip.stop();
clip.close();
}
currentSound = null;
}
public void update(LineEvent event) {
if (event.getType() == LineEvent.Type.STOP) {
audioEOM = true;
}
}
public void meta(MetaMessage message) {
if (message.getType() == 47) { // 47 is end of track
midiEOM = true;
}
}
public void run() {
int i=1;
do {
if( loadSound(fName) == true ) {
playSound();
}
i++;
} while (i<10);
currentSound = null;
} public static void main(String args[]) {
URL tmp=null;
try{
tmp=new URL("file:///D:/bong.wav");
}catch(Exception e){};
final SoundThrd snd=new SoundThrd(tmp);
snd.open();
JFrame f = new JFrame("Sound Box");
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
snd.close();
System.exit(0);
}
});
f.pack();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int w = 750;
int h = 340;
f.setSize(w, h);
f.setVisible(true);
snd.run() ;
}
}
try{
snd=new SoundThrd(new URL("http://192.168.49.49:8080/sound/msg.wav"));
//上面的url是有效的
snd.open();
}catch(Exception e){
System.out.print("NoSoundFound");
};snd.start();
一点声音都没有?是不是跟applet的限制有关?
真是很faint了,
我用了oicq的msg.wav就不行,说不支持该文件的格式,
最后用jdk1.3.1中的javasound例子中带的bong.wav,
就可以发声了,真真是faint到死。
同是wav,还有不同的版本的?
谁能说说?