如何在Java应用程序中播放声音文件

王朝java/jsp·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

简介

现有的在 Java applet 中对声音播放的支持使得声音播放任务变得很简单,但是在应用程序中缺少这样的支持。此篇小技巧将告诉你如何在 Java 应用程序中播放声音文件。(650 字)

在 Java 应用程序中播放声音文件在现有发行的 Java 版本中都没有正式的支持,但别担心,我们还是有办法的。此篇小技巧将告诉你怎么做--我们从 applet 中播放声音文件所需的基本步骤开始讲述,然后慢慢转到讲述 Java 应用程序中的支持。

在 applet 中播放声音文件非常简单,一般需要以下步骤:

创建一个 AudioClip 对象

装入 .au 声音文件到 AudioClip 对象

一次播放或者不停循环播放声音

停止播放

下面是相应的代码:

import java.applet.*;

AudioClip ac = getAudioClip(getCodeBase(), soundFile);

ac.play(); //play once

ac.stop(); //stop playing

ac.loop(); //play continuously

看起来,在 Java 应用程序中用相同的代码来播放声音文件似乎也是可行的。但很不幸,如果你真这样做,编译器就会报错。为什么呢?因为 AudioClip 对象及其方法 getAudioClip() 属于java.applet 包 -- 而不属于应用程序包的。可喜的是我们还可以自己做些改变来实现声音播放功能。

解决这个问题的窍门是利用由 Sun 及 其JDK 提供的某些 undocumented 的特征。先看看 Sun JDK 中的文件 classes.zip (使用任何解压工具即可),发现其中不仅包含标准的 Java 包如 java.applet 而且还存在包 sun.audio. (在 sun/audio 的目录下.)

包 sun.audio 中包含了用于播放声音文件所需的所有东西!下面是示例代码:

import sun.audio.*; //import the sun.audio package

import java.io.*;

//** add this into your application code as appropriate

// Open an input stream to the audio file.

InputStream in = new FileInputStream(Filename);

// Create an AudioStream object from the input stream.

AudioStream as = new AudioStream(in);

// Use the static class member "player" from class AudioPlayer to play

// clip.

AudioPlayer.player.start(as);

// Similarly, to stop the audio.

AudioPlayer.player.stop(as);

如果要用一个 URL 做为声音流的源(source),则用下面的代码所示替换输入流来创建声音流:

AudioStream as = new AudioStream (url.openStream());

如果需要持续播放声音文件,则要稍稍复杂一点:

// Create audio stream as discussed previously.

// Create AudioData source.

AudioData data = as.getData();

// Create ContinuousAudioDataStream.

ContinuousAudioDataStream cas = new ContinuousAudioDataStream (data);

// Play audio.

AudioPlayer.player.play (cas);

// Similarly, to stop the audio.

AudioPlayer.player.stop (cas);

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航