多媒体应用开发1---MediaPlayer

下面是一个简单的播放器,有四个按钮,分别播放,暂停,继续,停止


package com.example.mediaplayer;

import java.io.IOException;

import android.media.MediaPlayer;
import android.media.MediaPlayer.OnPreparedListener;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {
	MediaPlayer mPlayer;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		mPlayer = new MediaPlayer();
		//播放
		Button start_music = (Button)findViewById(R.id.start_music);
		start_music.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View arg0) {
				try {
					
					
					mPlayer.setDataSource("/sdcard/11.mp3");

					
					//使用要用异步的prepared,避免UI界面响应慢,用户体验差
					mPlayer.setOnPreparedListener(new OnPreparedListener() {
						@Override
						public void onPrepared(MediaPlayer mp) {
							// TODO Auto-generated method stub
							mPlayer.start();
						}
					});
					mPlayer.prepareAsync();
					
				} catch (IllegalArgumentException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (SecurityException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IllegalStateException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}});
		
		
		
			//暂停
			Button pause_music = (Button)findViewById(R.id.pause_music);
			pause_music.setOnClickListener(new OnClickListener() {
				
				@Override
				public void onClick(View v) {
					// TODO Auto-generated method stub
					mPlayer.pause();
				}
			});
			
			//继续
			Button continue_music = (Button)findViewById(R.id.continue_music);
			continue_music.setOnClickListener(new OnClickListener() {
				
				@Override
				public void onClick(View v) {
					// TODO Auto-generated method stub
					mPlayer.start();
				}
			});
			
			
			
			//停止
			Button stop_music = (Button)findViewById(R.id.stop_music);
			stop_music.setOnClickListener(new OnClickListener(){

				@Override
				public void onClick(View arg0) {
					// TODO Auto-generated method stub
					if(mPlayer != null){
						mPlayer.stop();
						mPlayer.release();
						mPlayer = null;
					}
				}
				
			});
			
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}




layout界面这里就不给出源码,就四个按钮,分别改好对应好名字就可以。

要点:

1.为什么要使用prepareAsync()方法,而不使用prepare()方法呢?因为prepare()方法的作用是获取和解码媒体数据,需要一定的时间,这样会有可能堵塞UI界面,产生ANR错误(Application not respose),prepareAsync()是异步的,不会堵塞当前的UI界面。

2.当运行stop()方法的时候要释放资源。mediaPlayer.release(),mediaPlayer=null.以免资源浪费,内存泄露。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值