如何在java的界面中添加背景音乐

Python016

如何在java的界面中添加背景音乐,第1张

Java中可以通过AudioClip类来实现音乐播放,循环等操作。AudioClip支持的音乐格式有.wav、.mid、AIFF、AU、RMF,但是格式要求相当严格。我用AudioClip播放我自己录的一段wav文件就没有声音,让我纠结了很久,最后才发现我的wav文件内容没有写文件尾,对于格式要求严格的AudioClip而言是无法识别的(这个问题困扰了我整晚)。

AudioCLip主要的方法有:play()播放依次声音;loop()循环播放音乐;stop()停止播放。

做法一:

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()

可以通过Service来播放背景音乐,以下是实现代码:

1.在AndroidManifest.xml文件中的<application>标签内加入下边语句

<service android:name=".MusicServer">

<intent-filter>

<action android:name="com.angel.Android.MUSIC"/>

<category android:name="android.intent.category.default" />

</intent-filter>

</service>

2.新建MusicServer.java类,内容为

import android.app.Service

import android.content.Intent

import android.media.MediaPlayer

import android.os.IBinder

public class MusicServer extends Service {

private MediaPlayer mediaPlayer

@Override

public IBinder onBind(Intent intent) {

// TODO Auto-generated method stub

return null

}

@Override

public void onStart(Intent intent,int startId){

super.onStart(intent, startId)

if(mediaPlayer==null){

// R.raw.mmp是资源文件,MP3格式的

mediaPlayer = MediaPlayer.create(this, R.raw.abc)

mediaPlayer.setLooping(true)

mediaPlayer.start()

}

}

@Override

public void onDestroy() {

// TODO Auto-generated method stub

super.onDestroy()

mediaPlayer.stop()

}

}

3.将歌曲放入raw文件夹下,名称为abc。

4.在Activity中加入代码

private Intent intent = new Intent("com.angel.Android.MUSIC")

onCreate方法中加入startService(intent)

就可以播放了。