`
从此醉
  • 浏览: 1034354 次
  • 性别: Icon_minigender_1
  • 来自: US
社区版块
存档分类
最新评论

android游戏开发系列(2)——背景音乐播放技术

 
阅读更多

背景音乐通常播放时间较长,且文件体积也相对较大。这类资源如果放在内存中,一方面给硬件资源本身就很紧缺的手机造成了负担,另一方面通常也没有这方面的需求,放在内存中,在调用时播放速度较快,而长时音乐文件通常作为背景音乐,速度稍微慢一些并不会影响太大。

android.media.MediaPlayer类是Android中用来控制音频,以及视频的类。应用该类,可以轻松实现对音频的处理。

MediaPlayer各个状态间关系如图:Idle状态为空闲,Initialized状态为初始化,Idle状态加载了音频资源后进入Initialized状态,之后调用prepare()方法就可以进入Prepared状态。在Prepared状态调用start()方法便可播放音乐。


音量的控制是播放音乐中常常用到的,Android中通过AudioManager类来控制音量:

AudioManager通过Context.getSystemService(Context.AUDIO_SERVICE)方法得到调用其他类的实例

public void adjustVolume(int derection, int flags)方法可以调节音量,direction为调节的方向,ADJUST_LOWER减小音量、ADJUST_RAISE增大音量、ADJUST_SAME保持音量不变。flags为标记、通常设置为0

public int getStreamMaxVolume(int streamType)方法得到最大音量

public int getStreamVolume(int stereamType)方法得到当前音量

下面通过一个简单的例子说明:

package wyf.zcl;
import android.app.Activity;			//引入相关包
import android.media.AudioManager;		//引入相关包
import android.media.MediaPlayer;		//引入相关包
import android.os.Bundle;				//引入相关包
import android.view.View;				//引入相关包
import android.widget.Button;			//引入相关包
import android.widget.Toast;
public class MyActivity extends Activity {
    /** Called when the activity is first created. */
	private Button bPlay;					//播放按钮
	private Button bPause;					//暂停按钮
	private Button bStop;					//停止按钮
	private Button bAdd;					//增大音量
	private Button bReduce;					//降低音量
	private boolean pauseFlag=false;		//暂停标记,true暂停态,false非暂停态
	MediaPlayer mp;							//MediaPlayer引用
	AudioManager am;						//AudioManager引用
    @Override
    public void onCreate(Bundle savedInstanceState) {	//Activity创建时调用
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);					//设置Activity的显示内容
        bPlay=(Button)findViewById(R.id.ButtonPlay);	//播放按钮的实例化
        bPause=(Button)findViewById(R.id.ButtonPause);	//暂停按钮的实例化
        bStop=(Button)findViewById(R.id.ButtonStop);	//停止按钮的实例化
        bAdd=(Button)findViewById(R.id.ButtonVAdd);		//增大音量按钮的实例化
        bReduce	=(Button)findViewById(R.id.ButtonVReduce);//降低音量按钮的实例化
        mp=new MediaPlayer();
        am=(AudioManager) this.getSystemService(this.AUDIO_SERVICE);
        bPlay.setOnClickListener(new View.OnClickListener() {//播放按钮的监听器
			@Override
			public void onClick(View v) {
				 try{
			        	mp.setDataSource("/sdcard/dl.mid");		//加载音频,进入Initialized状态。
			        }catch(Exception e){e.printStackTrace();}
			        try{
			        	mp.prepare();							//进入prepared状态。
			        }catch(Exception e){e.printStackTrace();}
				mp.start();										//播放音乐
				Toast.makeText(MyActivity.this, "播放音乐", Toast.LENGTH_SHORT).show();
		}});
        bPause.setOnClickListener(new View.OnClickListener() {	//暂停按钮添加监听器
			@Override
			public void onClick(View v) {
				if(mp.isPlaying()){								//如果是在播放态
					mp.pause();									//调用暂停方法
					pauseFlag=true;								//设置暂停标记
				}else if(pauseFlag){
					mp.start();									//播放音乐
					pauseFlag=false;							//设置暂停标记
				Toast.makeText(MyActivity.this, "暂停播放", Toast.LENGTH_SHORT).show();	
			}}
		});
        bStop.setOnClickListener(new View.OnClickListener() {	//停止按钮添加监听器
			@Override
			public void onClick(View v) {
				mp.stop();										//停止播放
			     mp.reset();									//重置状态到uninitialized态
			     try{
			        	mp.setDataSource("/sdcard/dl.mid");		//加载音频,进入Initialized状态。
			     }catch(Exception e){e.printStackTrace();}
			        try{
			        	mp.prepare();							//进入prepared状态。
			        }catch(Exception e){e.printStackTrace();}
			        Toast.makeText(MyActivity.this, "停止播放", Toast.LENGTH_SHORT).show();
		}});
        bAdd.setOnClickListener(new View.OnClickListener() {	//音量增大按钮添加监听器
			@Override
			public void onClick(View v) {
			am.adjustVolume(AudioManager.ADJUST_RAISE, 0);		//增大音量
			System.out.println("faaa");
			Toast.makeText(MyActivity.this, "增大音量", Toast.LENGTH_SHORT).show();
		}});
        bReduce.setOnClickListener(new View.OnClickListener() {	//音量降低按钮添加监听器
			@Override
			public void onClick(View v) {
			am.adjustVolume(AudioManager.ADJUST_LOWER, 0);		//减小音量
			Toast.makeText(MyActivity.this, "减小音量", Toast.LENGTH_SHORT).show();
		}});
    }
}

代码:http://download.csdn.net/detail/lxq_xsyu/6268203

代码中的音频:

运行结果:



分享到:
评论

相关推荐

    android游戏开发系列(2)——MediaPlayer

    背景音乐通常播放时间较长,且文件体积也相对较大。这类资源如果放在内存中,一方面给硬件资源本身就很紧缺的手机造成了负担,另一方面通常也没有这方面的需求,放在内存中,在调用时播放速度较快,而长时音乐文件...

    基于OpenGL的Android+3D游戏开发技术详解与典型案例(源码)

     本书的内容详细,且几乎涵盖了Android 3D游戏开发所有相关的技术,并向读者介绍了真实项目的开发流程,主要面向以下读者。  Android的初学者  本书详细介绍了OpenGL ES的基础知识,并对Android 3D游戏程序的开发...

    android开发入门教程

    第2章 工欲善其事 必先利其器——搭建Android开发环境 2.1 开发Android应用前的准备 2.1.1 Android开发系统要求 2.1.2 Android软件开发包 2.1.3 其他注意事项 2.2 Windows开发环境搭建 2.2.1 JDK、Eclipse、Android...

    Android实现音乐播放器——课程设计报告,优秀课设

    这是我的优秀课程设计,移动应用开发课期末的课程报告,包含实验目的、实验内容、程序设计和说明...每部分都写的很详细,具体的源码在我的博客《Android Studio实现音乐播放器》里面,这份课程设计报告和它是配套的。

    《Google Android开发入门与实战》

    第2章 工欲善其事 必先利其器——搭建Android开发环境 第3章 清点可用资本——AndroidSDK介绍 第5章 千里之行始于足下——第一个应用HelloWorld 第7章 良好的学习开端——Android基本组件介绍之我的美丽我做主——...

    android开发入门与实战(下)

    第2章 工欲善其事 必先利其器——搭建Android开发环境 2.1 开发Android应用前的准备 2.1.1 Android开发系统要求 2.1.2 Android软件开发包 2.1.3 其他注意事项 2.2 Windows开发环境搭建 2.2.1 JDK、Eclipse、Android...

    《Google Android开发入门与实战》.pdf

    第2章 工欲善其事 必先利其器——搭建android开发环境 7 2.1 开发android应用前的准备 7 2.1.1 android开发系统要求 7 2.1.2 android软件开发包 7 .2.1.3 其他注意事项 8 2.2 windows开发环境搭建...

    android开发入门与实战(上)

    第2章 工欲善其事 必先利其器——搭建Android开发环境 2.1 开发Android应用前的准备 2.1.1 Android开发系统要求 2.1.2 Android软件开发包 2.1.3 其他注意事项 2.2 Windows开发环境搭建 2.2.1 JDK、Eclipse、Android...

    《Android应用开发实践》课程报告——基于Android的2048小游戏的设计与实现

    基于Android的2048小游戏的设计与实现,格式完美,附代码直接在Android Studio运行。 目录如下: 第1章 绪论 1 1.1 项目背景 1 1.2 项目意义 1 1.3 国内外研究状况 1 1.4 主要工作 2 1.5 开发平台 2 第2章 系统分析...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    7.10 播放存储卡里的mp3音乐——MediaPlayer.setDataSource 7.11 自制录音/播放录音程序——MediaRecorder与AudioEncoder 7.12 通过收到短信开始秘密录音——MediaRecorder与BroadcastReceiver实例 7.13 内置影片...

    Cocos2D-X游戏开发技术精解.pdf

    《Cocos2D-X游戏开发技术精解》详细介绍如何使用Cocos2D-X引擎开发自己的移动平台游戏。全书共15章,主要内容包括:Cocos2D-X引擎简介;如何建立跨平台的开发环境;引擎的核心模块——渲染框架;如何实现动态画面和...

    Android 3D游戏开发技术宝典-OpenGL ES 2.0 (吴亚峰) 源代码

    2.1.3 背景音乐播放技术 27 2.1.4 简易音乐播放器的实现 29 2.2 简单数据的存储——preferences 33 2.2.1 preferences简介 33 2.2.2 preferences实现访问时间的记录 33 2.3 手机自带数据库——...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    7.10 播放存储卡里的mp3音乐——MediaPlayer.setDataSource 7.11 自制录音/播放录音程序——MediaRecorder与AudioEncoder 7.12 通过收到短信开始秘密录音——MediaRecorder与BroadcastReceiver实例 7.13 内置影片...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    7.10 播放存储卡里的mp3音乐——MediaPlayer.setDataSource 7.11 自制录音/播放录音程序——MediaRecorder与AudioEncoder 7.12 通过收到短信开始秘密录音——MediaRecorder与BroadcastReceiver实例 7.13 内置影片...

    老罗android开发视频教程全集百度网盘下载

    【第一版第六章】老罗Android开发视频--服务器端JDBC编程(2集) 【第一版第七章】老罗Android开发视频--服务器端Web编程(6集) 【第一版第八章】老罗Android开发视频-常用UI控件(33集) 【第一版第九章】老罗...

    Google Android SDK开发范例大全的目录

    7.10 播放存储卡里的mp3音乐——MediaPlayer.setDataSource 7.11 自制录音/播放录音程序——MediaRecorder与AudioEncoder 7.12 通过收到短信开始秘密录音——MediaRecorder与BroadcastReceiver实例 7.13 内置影片...

    Google.Android开发入门与实战

    第2章 工欲善其事 必先利其器——搭建Android开发环境 2.1 开发Android应用前的准备 2.1.1 Android开发系统要求 2.1.2 Android软件开发包 2.1.3 其他注意事项 2.2 Windows开发环境搭建 2.2.1 JDK、Eclipse、Android...

Global site tag (gtag.js) - Google Analytics