如果是插入背景音乐 最好使用mediaplayer类 使用方法如下
首先把音乐文件(.wma .mp3 .ogg)放入/res/raw 文件夹下 如果没有就新建一个 然后按这段代码 *** 作
//声明一个音乐播放器
private MediaPlayer mediaPlayer
//实例化mediaPlayer
mediaPlayer = new MediaPlayer()
//设置循环播放
mediaPlayer.setLooping(true)
//设置音乐路径,播放器初始化
try
{
// 创建MediaPlayer对象,将raw文件夹下的fighter.mp3
mediaplayer = MediaPlayer.create(this, R.raw.fighter)
mediaPlayer.prepare()
}
catch (IllegalArgumentException e)
{
// TODO Auto-generated catch block
e.printStackTrace()
}
catch (IllegalStateException e)
{
// TODO Auto-generated catch block
e.printStackTrace()
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace()
}
mediaPlayer.start()
//暂停,用start()可恢复播放
mediaPlayer.pause()
//停止播放,清除播放器,需重新设置音乐路径
if (mediaPlayer != null)
{
mediaPlayer.stop()
mediaPlayer.release()
}
注意一下 这里的mediaplayer不能支持多音频同时播放 如果是要播放游戏音效等即时性强但小的音频建议使用soundpool。
import java.io.*import javax.sound.sampled.*
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//修改你的音乐文件路径就OK了
AePlayWave apw=new AePlayWave("./111.wav")
apw.start()
}
}
//在程序中实例化这个类,启动线程,实例化的时候参照Test修改路径就OK
//播放声音的类
class AePlayWave extends Thread {
private String filename
public AePlayWave(String wavfile) {
filename = wavfile
}
public void run() {
File soundFile = new File(filename)
AudioInputStream audioInputStream = null
try {
audioInputStream = AudioSystem.getAudioInputStream(soundFile)
} catch (Exception e1) {
e1.printStackTrace()
return
}
AudioFormat format = audioInputStream.getFormat()
SourceDataLine auline = null
DataLine.Info info = new DataLine.Info(SourceDataLine.class, format)
try {
auline = (SourceDataLine) AudioSystem.getLine(info)
auline.open(format)
} catch (Exception e) {
e.printStackTrace()
return
}
auline.start()
int nBytesRead = 0
byte[] abData = new byte[512]
try {
while (nBytesRead != -1) {
nBytesRead = audioInputStream.read(abData, 0, abData.length)
if (nBytesRead >= 0)
auline.write(abData, 0, nBytesRead)
}
} catch (IOException e) {
e.printStackTrace()
return
} finally {
auline.drain()
auline.close()
}
}
}
有不明白的地方再hi我
做法一:InputStream is =null
AudioStream as = null
is = getClass().getResourceAsStream("a.wav")
try {
as = new AudioStream(is)
} catch (IOException e) {}
AudioPlayer.player.start(as)
此方法将音乐文件放入流中在播放,仅限于Java Application,容易报错,空指针异常,或者是流异常,不推荐。
做法二:
String music = "a.wav"
AudioClip clip = Applet.newAudioClip(getClass().getResource(music))
次方法在Applet中运行没有问题,但是Application中getclass()会返回空指针,导致失败。
推荐做法:
private URL url
private AudioClip ac
File f1 = new File("C:/3.wav")
try {
url= f1.toURL()
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
ac= Applet.newAudioClip(cb1)
ac.play()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)