奥运会和世界杯
Android中添加背景音乐的两种方法
前些天在尝试自己写一个Android小游戏——flybird
基本功能实现了,就想添加声音,然后上网查了查,大多是一样,可是用到我这,有些却不可以用,所以我还用了两种方法。
下面谈谈这两种方法。
方法一:这是使用Java中的多线程,另外new出一个类,用类来启动音乐。
这个方法,就像当初写java的小游戏一样,不过是在电脑上运行的,可以控制每一个动作,比如你的触碰动作,但是,在我这个游戏中,我需要的不是一点的音乐,虽 然后期会用到,而是一开始就有的。
不过,用这个方法,没用service,就是开起来的时候,会很卡,而且会闪退。
[java]
view plain
copy
package com.example.flybird_anla; import java.util.HashMap; import java.util.Map; import java.util.Random; import android.content.Context; import android.media.AudioManager; import android.media.MediaPlayer; import android.media.SoundPool; public class SoundPlayer { private static MediaPlayer music; private static SoundPool soundPool; private static boolean musicSt = true; //音乐开关 private static boolean soundSt = true; //音效开关 private static Context context; private static final int[] musicId = {R.raw.paopao}; private static Map
然后,在需要的地方new出类,在调用方法。
方法二:
这种方法是利用android中的service来开启,也就是进去的时候就播放出,退出就停止。
首先,在AndroidManifest中的application节点下添加:
[java]
view plain
copy
然后,再在项目中new出一个类,MusicServer:
[java]
view plain
copy
package com.example.flybird_anla; 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.paopao); mediaPlayer.setLooping(true); mediaPlayer.start(); } } @Override public void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); mediaPlayer.stop(); } }
最后,在在activity中,写两个函数:
[java]
view plain
copy
protected void onCreate(Bundle savedInstanceState) { Intent intent = new Intent(MainActivity.this,MusicServer.class); super.onCreate(savedInstanceState); startService(intent); manu(); } protected void onStop(){ Intent intent = new Intent(MainActivity.this,MusicServer.class); stopService(intent); super.onStop(); }
然后,就ok了。