android游戏开发系列(2)——背景音乐播放技术
来源:互联网 发布:ray kurzweil 骗 知乎 编辑:程序博客网 时间:2024/05/01 05:31
背景音乐通常播放时间较长,且文件体积也相对较大。这类资源如果放在内存中,一方面给硬件资源本身就很紧缺的手机造成了负担,另一方面通常也没有这方面的需求,放在内存中,在调用时播放速度较快,而长时音乐文件通常作为背景音乐,速度稍微慢一些并不会影响太大。
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() {//播放按钮的监听器@Overridepublic 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() {//暂停按钮添加监听器@Overridepublic 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() {//停止按钮添加监听器@Overridepublic 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() {//音量增大按钮添加监听器@Overridepublic 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() {//音量降低按钮添加监听器@Overridepublic 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)——背景音乐播放技术
- android游戏开发系列(2)——背景音乐播放技术
- Cocos2d-x游戏开发——播放背景音乐
- android 游戏开发之背景音乐
- 播放游戏背景音乐 步骤
- 游戏中背景音乐循环播放
- Android 应用播放背景音乐
- android实现背景音乐播放
- android 背景音乐的播放
- android实现背景音乐播放
- android :背景音乐播放
- android实现背景音乐播放
- android背景音乐播放
- android实现背景音乐播放
- android游戏背景音乐
- Windows phone开发——通过sliverlight开发应用,关于播放背景音乐的问题
- Android 之MediaPlayer播放背景音乐
- 安卓游戏开发------播放背景音乐和音效(MediaPlayer和SoundPool)
- Web编程技术点摘录(三)
- 小for的Cocos2d-x学习笔记与感悟11之文件保存和中文显示
- struts2小结
- 让有instr的join改走hash
- 交叉编译之二:linux环境搭建及下载程序
- android游戏开发系列(2)——背景音乐播放技术
- 找出数组中唯一出现k次的元素x
- CDC和HDC的区别与转换
- 尊重
- THINKPAD F1-F12键盘属性更改
- Struts2结合JFreeChart
- 黑洞数算法
- java中的异常(详解)
- 思科路由器配置enable password