背景音乐通常播放时间较长,且文件体积也相对较大。这类资源如果放在内存中,一方面给硬件资源本身就很紧缺的手机造成了负担,另一方面通常也没有这方面的需求,放在内存中,在调用时播放速度较快,而长时音乐文件通常作为背景音乐,速度稍微慢一些并不会影响太大。
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 3D游戏开发所有相关的技术,并向读者介绍了真实项目的开发流程,主要面向以下读者。 Android的初学者 本书详细介绍了OpenGL ES的基础知识,并对Android 3D游戏程序的开发...
第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 Studio实现音乐播放器》里面,这份课程设计报告和它是配套的。
第2章 工欲善其事 必先利其器——搭建Android开发环境 第3章 清点可用资本——AndroidSDK介绍 第5章 千里之行始于足下——第一个应用HelloWorld 第7章 良好的学习开端——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...
第2章 工欲善其事 必先利其器——搭建android开发环境 7 2.1 开发android应用前的准备 7 2.1.1 android开发系统要求 7 2.1.2 android软件开发包 7 .2.1.3 其他注意事项 8 2.2 windows开发环境搭建...
第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的2048小游戏的设计与实现,格式完美,附代码直接在Android Studio运行。 目录如下: 第1章 绪论 1 1.1 项目背景 1 1.2 项目意义 1 1.3 国内外研究状况 1 1.4 主要工作 2 1.5 开发平台 2 第2章 系统分析...
7.10 播放存储卡里的mp3音乐——MediaPlayer.setDataSource 7.11 自制录音/播放录音程序——MediaRecorder与AudioEncoder 7.12 通过收到短信开始秘密录音——MediaRecorder与BroadcastReceiver实例 7.13 内置影片...
《Cocos2D-X游戏开发技术精解》详细介绍如何使用Cocos2D-X引擎开发自己的移动平台游戏。全书共15章,主要内容包括:Cocos2D-X引擎简介;如何建立跨平台的开发环境;引擎的核心模块——渲染框架;如何实现动态画面和...
2.1.3 背景音乐播放技术 27 2.1.4 简易音乐播放器的实现 29 2.2 简单数据的存储——preferences 33 2.2.1 preferences简介 33 2.2.2 preferences实现访问时间的记录 33 2.3 手机自带数据库——...
7.10 播放存储卡里的mp3音乐——MediaPlayer.setDataSource 7.11 自制录音/播放录音程序——MediaRecorder与AudioEncoder 7.12 通过收到短信开始秘密录音——MediaRecorder与BroadcastReceiver实例 7.13 内置影片...
7.10 播放存储卡里的mp3音乐——MediaPlayer.setDataSource 7.11 自制录音/播放录音程序——MediaRecorder与AudioEncoder 7.12 通过收到短信开始秘密录音——MediaRecorder与BroadcastReceiver实例 7.13 内置影片...
【第一版第六章】老罗Android开发视频--服务器端JDBC编程(2集) 【第一版第七章】老罗Android开发视频--服务器端Web编程(6集) 【第一版第八章】老罗Android开发视频-常用UI控件(33集) 【第一版第九章】老罗...
7.10 播放存储卡里的mp3音乐——MediaPlayer.setDataSource 7.11 自制录音/播放录音程序——MediaRecorder与AudioEncoder 7.12 通过收到短信开始秘密录音——MediaRecorder与BroadcastReceiver实例 7.13 内置影片...
第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...