android相册如何加背景音乐,Android中添加背景音乐的两种方法
前些天在尝试自己写一个Android小游戏——flybird
基本功能实现了,就想添加声音,然后上网查了查,大多是一样,可是用到我这,有些却不可以用,所以我还用了两种方法。
下面谈谈这两种方法。
方法一:这是使用java中的多线程,另外new出一个类,用类来启动音乐。
这个方法,就像当初写java的小游戏一样,不过是在电脑上运行的,可以控制每一个动作,比如你的触碰动作,但是,在我这个游戏中,我需要的不是一点的音乐,虽 然后期会用到,而是一开始就有的。
不过,用这个方法,没用service,就是开起来的时候,会很卡,而且会闪退。
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 soundMap; //音效资源id与加载过后的音源id的映射关系表
public static void init(Context c)
{
context = c;
initMusic();
initSound();
}
//初始化音效播放器
private static void initSound()
{
soundPool = new SoundPool(10,AudioManager.STREAM_MUSIC,100);
soundMap = new HashMap();
soundMap.put(R.raw.paopao, soundPool.load(context, R.raw.paopao, 1));
soundMap.put(R.raw.boung, soundPool.load(context, R.raw.boung, 1));
}
//初始化音乐播放器
private static void initMusic()
{
int r = new Random().nextInt(musicId.length);
music = MediaPlayer.create(context,musicId[r]);
music.setLooping(true);
}
public static void playSound(int resId)
{
if(soundSt == false)
return;
Integer soundId = soundMap.get(resId);
if(soundId != null)
soundPool.play(soundId, 1, 1, 1, 0, 1);
}
/**
* 暂停音乐
*/
public static void pauseMusic()
{
if(music.isPlaying())
music.pause();
}
/**
* 播放音乐
*/
public static void startMusic()
{
if(musicSt)
music.start();
}
/**
* 切换一首音乐并播放
*/
public static void changeAndPlayMusic()
{
if(music != null)
music.release();
initMusic();
startMusic();
}
/**
* 获得音乐开关状态
* @return
*/
public static boolean isMusicSt() {
return musicSt;
}
/**
* 设置音乐开关
* @param musicSt
*/
public static void setMusicSt(boolean musicSt) {
SoundPlayer.musicSt = musicSt;
if(musicSt)
music.start();
else
music.stop();
}
/**
* 获得音效开关状态
* @return
*/
public static boolean isSoundSt() {
return soundSt;
}
/**
* 设置音效开关
* @param soundSt
*/
public static void setSoundSt(boolean soundSt) {
SoundPlayer.soundSt = soundSt;
}
/**
* 发出‘邦’的声音
*/
public static void boom()
{
playSound(R.raw.boung);
}
} 然后,在需要的地方new出类,在调用方法。
方法二:
这种方法是利用Android中的service来开启,也就是进去的时候就播放出,退出就停止。
首先,在AndroidManifest中的application节点下添加:
android:name=".MainActivity"
android:label="@string/app_name" >
然后,再在项目中new出一个类,MusicServer:
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中,写两个函数:
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了。
android相册如何加背景音乐,Android中添加背景音乐的两种方法相关推荐
- mysql添加临时索引_mysql 中添加索引的三种方法
在mysql中有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以通过不同的应用场景来进行索引的新建,在此列出三种新建索引的方法 mysql 中添加索引的三种方法 1.1 新建表中添加索 ...
- mysql 中添加索引的三种方法
在mysql中有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以通过不同的应用场景来进行索引的新建,在此列出三种新建索引的方法 mysql 中添加索引的三种方法 1.1 新建表中添加索 ...
- 怎样在python的turtle中输入文字_Python在图片中添加文字的两种方法
本文主要介绍的是利用Python在图片中添加文字的两种方法,下面分享处理供大家参考学习,下来要看看吧 一.使用OpenCV 在图片中添加文字看上去很简单,但是如果是利用OpenCV来做却很麻烦.Ope ...
- 怎么在python中添加文字_Python在图片中添加文字的两种方法
本文主要介绍的是利用Python在图片中添加文字的两种方法,下面分享处理供大家参考学习,下来要看看吧 一.使用OpenCV 在图片中添加文字看上去很简单,但是如果是利用OpenCV来做却很麻烦.Ope ...
- mysql 中添加索引的三种方法(一)
在mysql中有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以通过不同的应用场景来进行索引的新建,在此列出三种新建索引的方法 mysql 中添加索引的三种方法 1.1 新建表中添加索 ...
- html 如何给图片打标签,图文详解HTML页面中添加图片的三种方法
在页面布局时,经常需要在页面中插入图片,那你知道如何在HTML中添加图片吗?这篇文章就给大家介绍HTML页面中插入图片的三种方法,感兴趣的朋友可以参考一下,希望对你有所帮助. 方法一.用HTML中的i ...
- python文字教程-Python在图片中添加文字的两种方法
本文主要介绍的是利用Python在图片中添加文字的两种方法,下面分享处理供大家参考学习,下来要看看吧 一.使用OpenCV 在图片中添加文字看上去很简单,但是如果是利用OpenCV来做却很麻烦.Ope ...
- python怎么在图片上写字_Python在图片中添加文字的两种方法
本文主要介绍的是利用Python在图片中添加文字的两种方法,下面分享处理供大家参考学习,下来要看看吧 一.使用OpenCV 在图片中添加文字看上去很简单,但是如果是利用OpenCV来做却很麻烦.Ope ...
- DLL中资源切换的两种方法
DLL中资源切换的两种方法 方法1 AFX_MANAGE_STATE(AfxGetAppModuleState()); // MFC扩展dll 或 AFX_MANAGE_ ...
- python如何在图片上添加文字_Python在图片中添加文字的两种方法
本文主要介绍的是利用Python在图片中添加文字的两种方法,下面分享处理供大家参考学习,下来要看看吧 一.使用OpenCV 在图片中添加文字看上去很简单,但是如果是利用OpenCV来做却很麻烦.Ope ...
最新文章
- DeepMind集成AI智能体架构「MERLIN」:基于目标导向智能体中的无监督预测记忆
- 01-Java基础语法
- mysql_常用命令
- P5217 贫穷 平衡树
- python interactive window_如果PySide应用程序是从IPython interactive cons运行的,上下文菜单就会消失...
- 前后端分离 获取用户ip_前后端分离应用——用户信息传递
- 获取浏览器选中文本并操作
- 白话文:几个例子马上看懂typescript基础类型
- revi插件使用方法| 如何在Revit中修改CAD图纸
- abaqus14安装_Abaqus安装方法
- 图论与代数结构 最短路问题
- RHEL7修改root密码
- 什么是DNS?为什么选择UDP?详细的DNS解析过程?
- android动态mac地址,Android 版本兼容 — Android 6.0 和 7.0后获取Mac地址
- JIRA部署破解和confluence整合
- 基于PHP的旅游管理系统
- H5页面新增二维码、条形码扫描识别功能
- docker容器里无法使用vi命令
- 图形性能测试软件,跨平台图形性能基准测试软件3DMark Wild Life发布
- 如何实现企业全链路协同,实现企业业绩增长
热门文章
- jmeter使用之文件读取
- bat批处理修改文件夹下文件名字
- 共享服务器哪个系统号,什么是服务器internet应用服务器之一,他可以使用户在不同·操作系统之间进行文件共享...
- React入门(2)--React的虚拟dom和diff算法
- 一、T100整体系统管理之T100系统架构
- python编程第-学习Python编程第002天
- docker启动mysql报错
- java毕业设计高校学生管理系统mybatis+源码+调试部署+系统+数据库+lw
- java- - Object所有类的超类
- 机器学习——线性回归实践