android中添加背景音乐

方法一:这是使用java中的多线程,另外new出一个类,用类来启动音乐。

这个方法,就像当初写java的小游戏一样,不过是在电脑上运行的,可以控制每一个动作,比如你的触碰动作,但是,在我这个游戏中,我需要的不是一点的音乐,虽               然后期会用到,而是一开始就有的。

不过,用这个方法,没用service,就是开起来的时候,会很卡,而且会闪退。

  1 package com.example.flybird_anla;
  2
  3
  4 import java.util.HashMap;
  5 import java.util.Map;
  6 import java.util.Random;
  7
  8
  9
 10 import android.content.Context;
 11 import android.media.AudioManager;
 12 import android.media.MediaPlayer;
 13 import android.media.SoundPool;
 14
 15
 16 public class SoundPlayer {
 17
 18    private static MediaPlayer music;
 19    private static SoundPool soundPool;
 20
 21    private static boolean musicSt = true; //音乐开关
 22    private static boolean soundSt = true; //音效开关
 23    private static Context context;
 24
 25    private static final int[] musicId = {R.raw.paopao};
 26    private static Map<Integer,Integer> soundMap; //音效资源id与加载过后的音源id的映射关系表
 27
 28    public static void init(Context c)
 29    {
 30        context = c;
 31
 32        initMusic();
 33
 34        initSound();
 35    }
 36
 37    //初始化音效播放器
 38    private static void initSound()
 39    {
 40        soundPool = new SoundPool(10,AudioManager.STREAM_MUSIC,100);
 41
 42        soundMap = new HashMap<Integer,Integer>();
 43        soundMap.put(R.raw.paopao, soundPool.load(context, R.raw.paopao, 1));
 44        soundMap.put(R.raw.boung, soundPool.load(context, R.raw.boung, 1));
 45    }
 46
 47    //初始化音乐播放器
 48    private static void initMusic()
 49    {
 50        int r = new Random().nextInt(musicId.length);
 51        music = MediaPlayer.create(context,musicId[r]);
 52        music.setLooping(true);
 53    }
 54
 55
 56    public static void playSound(int resId)
 57    {
 58        if(soundSt == false)
 59            return;
 60
 61        Integer soundId = soundMap.get(resId);
 62        if(soundId != null)
 63            soundPool.play(soundId, 1, 1, 1, 0, 1);
 64    }
 65
 66    /**
 67     * 暂停音乐
 68     */
 69    public static void pauseMusic()
 70    {
 71        if(music.isPlaying())
 72            music.pause();
 73    }
 74
 75    /**
 76     * 播放音乐
 77     */
 78    public static void startMusic()
 79    {
 80        if(musicSt)
 81            music.start();
 82    }
 83
 84    /**
 85     * 切换一首音乐并播放
 86     */
 87    public static void changeAndPlayMusic()
 88    {
 89        if(music != null)
 90            music.release();
 91        initMusic();
 92        startMusic();
 93    }
 94
 95    /**
 96     * 获得音乐开关状态
 97     * @return
 98     */
 99    public static boolean isMusicSt() {
100        return musicSt;
101    }
102
103    /**
104     * 设置音乐开关
105     * @param musicSt
106     */
107    public static void setMusicSt(boolean musicSt) {
108        SoundPlayer.musicSt = musicSt;
109        if(musicSt)
110            music.start();
111        else
112            music.stop();
113    }
114
115    /**
116     * 获得音效开关状态
117     * @return
118     */
119    public static boolean isSoundSt() {
120        return soundSt;
121    }
122
123    /**
124     * 设置音效开关
125     * @param soundSt
126     */
127    public static void setSoundSt(boolean soundSt) {
128        SoundPlayer.soundSt = soundSt;
129    }
130
131    /**
132     * 发出‘邦’的声音
133     */
134    public static void boom()
135    {
136        playSound(R.raw.boung);
137    }
138 }

然后,在需要的地方new出类,在调用方法。

方法二:

这种方法是利用Android中的service来开启,也就是进去的时候就播放出,退出就停止。

首先,在AndroidManifest中的application节点下添加:

1 <activity
2             android:name=".MainActivity"
3             android:label="@string/app_name" >
4             <intent-filter>
5                 <action android:name="android.intent.action.MAIN" />
6
7                 <category android:name="android.intent.category.LAUNCHER" />
8             </intent-filter>
9         </activity>

然后,再在项目中new出一个类,MusicServer:

 1 package com.example.flybird_anla;
 2
 3 import android.app.Service;
 4 import android.content.Intent;
 5 import android.media.MediaPlayer;
 6 import android.os.IBinder;
 7
 8 public class MusicServer extends Service {
 9
10     private MediaPlayer mediaPlayer;
11
12     @Override
13     public IBinder onBind(Intent intent) {
14         // TODO Auto-generated method stub
15         return null;
16     }
17
18     @Override
19     public void onStart(Intent intent, int startId) {
20         super.onStart(intent, startId);
21
22         if (mediaPlayer == null) {
23
24             // R.raw.mmp是资源文件,MP3格式的
25             mediaPlayer = MediaPlayer.create(this, R.raw.paopao);
26             mediaPlayer.setLooping(true);
27             mediaPlayer.start();
28
29         }
30     }
31
32     @Override
33     public void onDestroy() {
34         // TODO Auto-generated method stub
35         super.onDestroy();
36         mediaPlayer.stop();
37     }
38 }

最后,在在activity中,写两个函数:

 1 protected void onCreate(Bundle savedInstanceState) {
 2         Intent intent = new Intent(MainActivity.this,MusicServer.class);
 3         super.onCreate(savedInstanceState);
 4         startService(intent);
 5         manu();
 6     }
 7
 8     protected void onStop(){
 9         Intent intent = new Intent(MainActivity.this,MusicServer.class);
10         stopService(intent);
11         super.onStop();
12
13     }

然后,就ok了。

时间: 2024-11-03 20:12:46

android中添加背景音乐的相关文章

Cocos2d-x开发中国象棋《十一》在游戏中添加背景音乐

在上一节中实现了悔棋,在这节将介绍如何在游戏中添加背景音乐 看一下效果: 实现思路: 当单击后游戏中播放背景音乐,并且背景音乐切换按钮由变成 当单击后停止播放背景音乐,并且背景音乐切换按钮由变成 当游戏进入后台后停止播放背景音乐 当游戏恢复后继续播放背景音乐 实现代码: 在SceneGame类中定义一个成员函数Voice(CCObject*)用于实现背景音乐的切换,Voice(CCObject*)中的代码 //播放背景音乐 void SceneGame::Voice(CCObject*) { s

Android中添加思源字体/NotoSansCJK/SourceHanSans

系统版本:Android 4.2.2_r1 本文主要是在Android中添加思源字体的过程记录.思源字体是Google和Adobe在2014.07.18发布的中文字体. 1.获取思源字体(Google:Noto Sans CJK; Adobe:Source Han Sans). 2.解压后如下几个才是思源字体. NotoSansHans-Regular.otf    常规 NotoSansHans-Black.otf      黑体 NotoSansHans-DemiLight.otf Noto

在网页中添加背景音乐

有两种添加背景音乐的方式分别用<bgsound>和<embed></embed>标签,当用<embed>插入背景音乐时可以设置宽度和高度为0,隐藏播放器.二者的参数如下: ■ <bgsound>: <bgsound> 是用来插入背景音乐,但只适用于 IE,其参数设定不多.如下 <bgsound src="your.mid"autostart=true loop=infinite> src="y

在APP中添加背景音乐

我说的这种方法是利用Android中的service来开启,也就是进去的时候就播放出,退出就停止. 首先,在AndroidManifest中的application节点下添加: <activity            android:name=".MainActivity"            android:label="@string/app_name" >            <intent-filter>            

Android中添加和识别手势操作

实现思路:将手势写入GestureLibrary中,对其他手势进行匹配对比,进行识别 先在布局中加入GestureOverlayView组件 <android.gesture.GestureOverlayView android:id="@+id/add_gesture" android:layout_width="match_parent" android:layout_height="match_parent" android:layo

Android中添加水平线和垂直线

1.添加水平线 <View android:layout_height="0.5dip" android:background="#686868" android:layout_width="match_parent"/> 2.添加垂直线 <View android:layout_height="match_parent" android:background="#686868" andr

如何在博客中添加背景音乐(博客园必须获得脚本权限)

博客播放器代码大全!! ◆◆◆◆◆MTV代码<embed src="MTV的地址" width="305" height="250" type="video/x-msvideo" autostart="true" loop="false" align="left"> ◆◆◆◆◆背景音乐代码(写在日记标题里)1.显示播放器代码:<embed src=h

Android中添加竖线和横线的方法

竖线 <View       android:layout_width="1dip"     android:layout_height="match_parent"     /> 横线 <View  android:layout_height="1px"            android:layout_width="match_parent" />

HTML中添加背景音乐

<audio controls="controls" height="100" width="100"> <source src="小果 - 蒲公英的梦想.mp3" type="audio/mp3" /> <source src="小果 - 蒲公英的梦想.ogg" type="audio/ogg" /> <embed heig