`
chen592969029
  • 浏览: 108373 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Android下的一个音乐播放工具类

阅读更多
一般的Android应用程序的音乐可以分为背景音乐和点击各种控件时的音效,前者一般为比较大的音乐文件,后者一般为比较小的音乐。在Android中一般用MediaPlayer类处理比较大的音频文件,用SoundPool类处理比较短促的音频文件。

因此,现设计一音乐播放工具类如下:
MusicPlayer
import android.content.Context;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.SoundPool;

import com.ruanko.shengji4Android.R;
import com.ruanko.shengji4Android.model.SysSetting;

public class MusicPlayer implements MediaPlayer.OnCompletionListener, MediaPlayer.OnErrorListener {
	private Context context;
	private MediaPlayer bgPlayer;  //播放背景音乐的播放器
	private SoundPool actionMusicPlayer;  //播放音效的播放器
	private int source_da,source_givecard,source_start,source_win,source_calllord;  //各种音效的source
	
	public MusicPlayer(Context context) {  //初始化
		this.context = context;
		this.actionMusicPlayer = new SoundPool(10, AudioManager.STREAM_SYSTEM,5);  //这里指定声音池的最大音频流数目为10,声音品质为5大家可以自己测试感受下效果
		this.source_da = actionMusicPlayer.load(context, R.raw.da, 0);
		this.source_givecard = actionMusicPlayer.load(context, R.raw.givecard, 0);
		this.source_start = actionMusicPlayer.load(context, R.raw.start, 0);
		this.source_win = actionMusicPlayer.load(context, R.raw.win, 0);
		this.source_calllord = actionMusicPlayer.load(context, R.raw.calllord, 0);
	}

	public void onCompletion(MediaPlayer mp) {  //音频文件播放完成时自动调用
		
	}

	public boolean onError(MediaPlayer mp, int what, int extra) {  //音频文件播放发生错误时自动调用
		return false;
	}
	
	public void playBgSound(int paramInt) {  //播放背景音乐,paramInt为音频文件ID
		if(!SysSetting.getInstance(context).isBgSound()) {  //SysSetting为一个单例类,是我自己定义的,用于保存本应用程序相关设置,isBgSound()为得到是否开启背景音乐设置
			return;
		}
		
		stopSound(bgPlayer);
		
		try {
			MediaPlayer mediaPlayer = MediaPlayer.create(context, paramInt);
			bgPlayer = mediaPlayer;
			bgPlayer.setOnCompletionListener(this);
			bgPlayer.setLooping(true);  //设置是否循环,一般背景音乐都设为true
			bgPlayer.start();
		} catch (IllegalStateException e) {
			e.printStackTrace();
		} 
	}
	
	public MediaPlayer getBackGroundPlayer() {
		return this.bgPlayer;
	}
	
	public void stopBgSound() {  //停止背景音乐的播放
		if(bgPlayer == null) 
			return;
		if(bgPlayer.isPlaying())
			bgPlayer.stop();
		bgPlayer.release();
		bgPlayer = null;
	}
	
	private void playSound(int source) {  //如果系统设置中开启了音效,则播放相关的音频文件
		if(SysSetting.getInstance(context).isEffectSound()) {
			actionMusicPlayer.play(source, 1, 1, 0, 0, 1);
		}
	}
	
	public void playHitCardSound() {
		playSound(source_da);
	}
	
	public void playGiveCardSound() {
		playSound(source_givecard);
	}
	
	public void playStartSound() {
		playSound(source_start);
	}
	
	public void playWinSound() {
		playSound(source_win);
	}
	
	public void playCalllordSound() {
		playSound(source_calllord);
	}
}


在activity中怎样使用这个工具类呢?播放背景音乐可能我们一般都想到的是service,但是service对背景音乐的控制比较难,尤其是,在不同场景,需要不时变换背景音乐的情况下,因此,可以考虑自己定义一个activity,继承Activity,在其中定义一个静态的成员变量
public static MusicPlayer musicPlayer;

并在这个Activity的onCreate方法中初始化该musicPlayer
		if(musicPlayer == null) {
			SysSetting.getInstance(getApplicationContext()).load();  //加载系统设置,SysSetting为我自己定义的一个类,由于代码较长,就不给出了
			musicPlayer = new MusicPlayer(getApplicationContext());
			musicPlayer.playBgSound(R.raw.welcome);  //播放背景音乐
		}

然后,再将所有的Activity继承于这个自己定义的Activity即可。
分享到:
评论

相关推荐

    音乐播放工具类

    音乐播放工具类。

    Android实现简单音乐播放器(MediaPlayer)

    Android实现简单音乐播放器(MediaPlayer),供大家参考,具体内容如下 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 工程内容 ...然后新建一个类MusicService继承Service,在类中定义一个MyB

    A毕业论文:Android音乐播放软件

    Android音乐播放软件是一种可以在Android设备上运行的应用程序,旨在给用户提供方便、直观地管理和播放音乐文件的工具。这类软件通常具有以下功能和特点: 1. 音乐播放功能:允许用户浏览设备中的音乐文件并播放...

    Android小程序实现音乐播放列表

    (1)创建一个数据类工具类DBHelper,该类继承SQLiteOpenHelper,重写onCreate()和onUpgrade()方法,并添加insert()、delete()、query()方法,分别实现数据的添加、删除和查询。DBHelper类的代码如下: package ...

    Android应用源码和讯音乐播放器培训项目

    本项目是一个基于安卓的音乐播放器项目,本站之前发布过不下20个音乐播放器相关的项目。本项目基于android4.0以上开发,实现了皮肤更换、字体设置、播放顺序、手势设置、开机启动、文件扫描、文件下载、歌词显示、...

    音乐边边下边播工具类

    android音乐 边下边播放实现(获取进度,暂停,停止,播放)

    android手机音乐播放器实训报告final.doc

    音乐播放:界面对歌曲操作有播放、暂停、停止、音量控制、上一首/下一首 播放模式:随机播放、顺序播放、单曲循环。 2. 音乐管理:音乐列表、专辑:显示全部音乐文件,能直接选择播 放歌曲。 艺术家:归类艺术家的...

    Android应用源码魔音盒音乐播放器项目

    本项目源码是众多音乐播放器源码中的佼佼者,各种功能都很...源码注释丰富并且有很多可以直接使用的工具类是套不错的借鉴源码 涉及模块&技术 SQLite 摇一摇 后台播放 后台下载 音乐播放 文件扫描 图片处理 桌面小工具

    新版Android开发教程.rar

    Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。 Beta 版 的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 ...

    android开发中关于内存读写的工具类

    在我们进行android开发的过程中经常会遇到一些关于内存读写的问题,比如说下载音乐视频,或者读取手机中的某个文件,这是一个封装好的一个内存读写库,方便大家使用。

    android开发揭秘PDF

    2.3 创建第一个Android项目——HeUoAndroid 2.3.1 创建HelloAndroid项目 2.3.2 运行HelloAndroid及模拟器的使用 2.3.3 调试HelloAndroid 2.4 小结 第二部分 基础篇 第3章 Android程序设计基础 3.1 Android程序框架 ...

    Android 蓝牙 音频焦点(Audio Focus)——卡音,多年安卓开发经验,从实际项目中获取到的经验,对安卓开发者非常有

    Android 蓝牙 音频焦点(Audio Focus)——卡音,多年安卓开发经验,从实际项目中获取到的经验,对安卓开发者非常有帮助。

    Android音乐播放器需求分析报告报告材料.doc

    2.2 问题说明 音乐播放器是手机必不可少的软件之一,是手机播放音乐的工具,一个好的播放器可以 给用户一个好的用户体验,简单快捷的操作是一个播放器所必须的。 本软件流程图。 2.3系统范围 音乐播放器主要为手机...

    android开发——简易计算器的设计报告.doc

    Android基于Linux平台,由操作系统、中间件、用户界面和应用软件组成,具 有以下5个特点:开放性、应用程序无界限、应用程序是在平等条件下创建的、应用程序 可以轻松的嵌入网络、应用程序可以并行运行。 一、实训...

    Android程序设计基础

     第一部分中将首先介绍Android,内容涉及如何安装Android模拟器,如何使用IDE(Intergrated Development Environment,集成开发环境)编写第一个程序。然后,我们将介绍一些基本的概念,比如Android中的生命周期。...

    Android基础教程

     《Android基础教程(第3版·修订版)》是一部关于Android开发的基础教程,采用Pragmatic系列图书一贯由浅入深、循序渐进的方式讲解了Android程序设计的核心概念和技术。书中不仅结合数独游戏开发案例形象生动地...

    Android 4游戏编程入门经典

     2.3.2 创建一个android虚拟设备  2.3.3 运行应用程序  2.3.4 调试应用程序  2.3.5 logcat和ddms  2.3.6 使用adb  2.4 小结 第3章 游戏开发基础  3.1 游戏类型  3.1.1 休闲游戏  3.1.2 益智游戏  3.1.3 ...

    《Android应用开发揭秘》附带光盘代码.

     2.3 创建第一个Android项目——HeUoAndroid  2.3.1 创建HelloAndroid项目  2.3.2 运行HelloAndroid及模拟器的使用  2.3.3 调试HelloAndroid  2.4 小结  第二部分 基础篇  第3章 Android程序设计基础  3.1 ...

    Android应用源码教学自学用音乐播放器

    这是一款比较基础的音乐播放器源码,项目代码量不大,打开软件后会自动扫描歌曲,速度很快,我的手机上有400多首歌曲可以一次性自动扫描添加进歌曲列表。适合做教学演示或者新手自学播放器部分知识,项目中提供了很...

    Android应用开发揭秘pdf高清版

    C++(NDK)和Python、Lua等脚本语言(AndroidScriptingEnvironment)来开发Android应用,《Android应用开发揭秘》实战性强,书中的每个知识点都有配精心设计的示例,尤为值得一提的是,它还以迭代的方式重现了各种...

Global site tag (gtag.js) - Google Analytics