【Android开发学习04】长时间的音乐播放实现MediaPlayer
长时间的音乐因为体积比较大,放在手机内存中,对资源的占用太大。
MediaPlayer类可以用来播放音频、视频和流媒体,MediaPlayer包含了Audio和Video的播放功能。
在Android的界面上,Music和Video两个应用程序都是调用MediaPlayer实现的。
MediaPlayer在底层是基于OpenCore(PacketVideo)的库实现的。
一.基础知识:
首先来看看MediaPlayer的生命周期:

下边是MediaPlayer提供的常用方法:
2. 代码编辑(\src\wyf\zcl\MyActivity.java):
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/music/sound_of_dream_DJ.mp3");//加载音频,进入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/music/sound_of_dream_DJ.mp3");//加载音频,进入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();}}); }}
播放的是SD卡上的" /sdcard/music/sound_of_dream_DJ.mp3 "文件。
参考文章:http://wiki.emsym.com/index.php?title=Android_MediaPlayer&oldid=5476
http://blog.csdn.net/chenzheng_java/article/details/6263184