java发声

系统自动退出这篇文章中,遇到了声音上报频繁的时候,系统会毫无症状自动退出的情况。大概是因为AudioClip发声的时候,声音混合时会引起异常,以致JVM不能处理这个异常导致系统退出。下面大概讲讲java的发声实现。
一、AudioClip
AudioClip 接口是用于播放音频剪辑的简单抽象。多个 AudioClip 项能够同时播放,得到的声音混合在一起可产生合成声音。void play()开始播放此音频剪辑。每次调用此方法时,剪辑都从头开始重新播放。缺点就是声音混合时,系统会异常退出,优点是实现了循环播放功能。代码示例:
import java.applet.*;
public class PlayAudio extends Applet {
    String soundFile = "....";
  AudioClip ac = getAudioClip(getCodeBase(), soundFile);
  ac.play(); //play once
  ac.stop(); //stop playing
  ac.loop(); //play continuously
}

二、音频流
SUN公司提供的音频流,它的好处是不会出现声音卡的现象,坏处是没有循环功能,要实现循环就必须自己写算法控制。代码示例:
// 播放音乐、音效方法 
public static void soundPlay(String sound) { 
  try { 
         InputStream music = new java.io.FileInputStream(sound); 
         AudioStream play_music = new sun.audio.AudioStream(music); 
      } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
          e.printStackTrace(); 
      } catch (IOException e) { 
      // TODO Auto-generated catch block 
          e.printStackTrace(); 
      }
      sun.audio.AudioPlayer.player.start(play_music); 
}

你可能感兴趣的:(java,jvm,算法,sun,音乐)