在java应用程序中加入声音

    先说一下在 applet 中播放声音文件的一般步骤:  
  创建一个 AudioClip 对象 
  装入 .au 或者wav的声音文件(或者后面所说的支持的类型)到 AudioClip 对象     
  下面是相应的代码: 
  import java.applet.*;  
  AudioClip ac = getAudioClip(getCodeBase(), soundFile);
  ac.play(); //一次播放
  ac.stop(); //停止播放
  ac.loop(); //循环播放声音 
  看起来,在 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 java.io.*;  
  将上面两条语句放你程序前面(相信你学java这点还是知道吧! )  
       // 用输入流打开一音频文件
  InputStream in = new FileInputStream(Filename);// FIlename 是你加载的声音文件如(“game.mav”)
  
  // Create an AudioStream object from the input stream.
          AudioStream as = new AudioStream(in);  
      AudioPlayer.player.start(as);/ /用静态成员player.start播放音乐  
         AudioPlayer.player.stop(as);// 同样这是关闭音乐

// // // /
  如果需要持续播放声音文件,则要稍稍复杂一点:
  
  InputStream in = new FileInputStream(Filename);// FIlename 是你加载的声音文件如(“game.mav”) //获得音频文件 
       AudioStream as = new AudioStream(in);
        AudioData data = as.getData();  
      // Create ContinuousAudioDataStream.
       ContinuousAudioDataStream gg = new ContinuousAudioDataStream (data);  
     AudioPlayer.player.start (gg);  // 播放 
     AudioPlayer.player.stop (gg); // 停止  
  如果要用一个 URL 做为声音流的源(source), 则用下面的代码所示替换输入流来创建声音流: 
  AudioStream as = new AudioStream (url.openStream());
  ============== ============================== ==========

现在我给一个应用程序的例子给大家:
import sun.audio.*; //import the sun.audio package
import java.io.*;
public class MYsound{
public MYsound(){
try{
InputStream in = new FileInputStream("hello.wav");
AudioStream as = new AudioStream(in);
AudioPlayer.player.start(as);
//AudioPlayer.player.stop(as);
}catch(FileNotFoundException e){
}
catch(IOException e){
}
}
public static void main(String arg[]){
new  MYsound();
}
}
、、、、、、、、、、、、、、、、、、、、、、、
注意::声音文件一定与你的源程序放在一个目录, 其他目录的自己处理
声音文件支持类型,au,wav,RMF,MIDI类型0文件, MIDI类型1文件,AIFF,(其他的自己去找)
、、、、、、、、、、、、、、、、、、、、、、、

拿过去用就ok了,还有就是一定要做异常处理
声明:



/*try{//播放声音只放一次
           InputStream in = new FileInputStream("hello.wav");
           AudioStream as = new AudioStream(in);
           AudioPlayer.player.start( as);
        }catch(FileNotFoundException e){
    System.out.print(" FileNotFoundException ");
}
catch(IOException e){   System.out.print("有错误!") ;}*/

try{//循环播放声音
       InputStream in = new FileInputStream("hello.wav");
               AudioStream as = new AudioStream(in);
               AudioData data = as.getData();
             ContinuousAudioDataStream gg= new ContinuousAudioDataStream (data);
             AudioPlayer.player.start( gg);// Play audio.
                      }catch(FileNotFoundException e){
                  System.out.print(" FileNotFoundException ");
                }
catch(IOException e){
        System.out.print("有错误!");}        
// // // // ///           
转自:http://wenda.tianya.cn/wenda/thread?tid=7f56d51cd8e46a29
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值