java发声

在[url=http://ldjsyl.iteye.com/blog/174690]系统自动退出[/url]这篇文章中,遇到了声音上报频繁的时候,系统会毫无症状自动退出的情况。大概是因为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);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值