文 件:MediaPlayer-基本使用方法.java 参 考:Android 中级教程之------Android MediaPlayer播放mp3的实例 有价值的:http://terryblog.blog.51cto.com/1764499/339630/ 说 明: 本文中改进了很多异常及不能重复播放。试验无任何异常了。 编 者:2014年6月15日 张永辉 效 果: 见图 [[P]MP1.png] ================================================================================ 知识讲解: 1 Android的MediaPlayer包含了Audio和video的播放功能,在Android的界面上,Music和Video两个应用程序都是调用MediaPlayer实现的。 2 MediaPlayer在底层是基于OpenCore(PacketVideo)的库实现的,为了构建一个MediaPlayer程序,上层还包含了进程间通讯等内容, 这种进程间通讯的基础是Android基本库中的Binder机制。 示例功能: 利用MediaPlayer来播放res/raw文件夹中一首非常动听的英文哥love fool.mp3.程序有三个ImageButton按钮,播放,停止,暂停! 实现过程: 1 新建一个Android工程, 平台、目标等都使用Android2.2, 最后一步去掉勾选创建Activity。 基本配置: AppLication.Name: MediaPlayerDemo Project.Name :MediaPlayerDemo Package :example.mediaplayerdemo Minimum..SDK: API8 2.2 Target SDK: API8 2.2 Compile With: API8 2.2 Theme : None 最后一步,去掉创建Activity 2 导入图片和MP3文件 当然这些得准备这些资源 \res下新建raw,导入foollove.mp3 \res下新建drawable,导入play.png、pause.png、stop.png、white.png(背景图片) 3 布局文件 \layout中创建布局文件mplayout.xml <?xml version="1.0" encoding="utf-8"?> 4 资源文件 \layout\string.xml MediaPlayerDemo Mp3-Irc nc 5 AndroidMinifest.xml 6 创建源文件: 包:example.mediaplayerdemo src\Mediaplayerdemo.java package example.mediaplayerdemo; import android.app.Activity; import android.media.MediaPlayer; import android.os.Bundle; import android.view.View; import android.widget.ImageButton; import android.widget.TextView; public class Mediaplayerdemo extends Activity { private ImageButton butnPlay,butnStop,butnPause; //三个按钮 private TextView msgShow; //显示消息 private MediaPlayer mplayer; //播放器 private boolean isPaused = false; //是否为暂停,默认为false public boolean isStopd = true; //是否在start前按下stop //加载媒体文件 void loadMediaFile() { mplayer = MediaPlayer.create(this,R.raw.miuse); } public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.mplayout); //资源 butnPlay = (ImageButton)findViewById(R.id.mybutnPlay); //通过findViewById找到资源 butnStop = (ImageButton)findViewById(R.id.mybutnStop); butnPause = (ImageButton)findViewById(R.id.mybutnPause); msgShow = (TextView)findViewById(R.id.myTextView1); //创建MediaPlayer对象,将raw文件夹下的lovefool.mp3 mplayer = MediaPlayer.create(this,R.raw.miuse); //必须要先加载,否则mplayer.setxxx 方法异常 //增加播放音乐按钮的事件 //【按钮】开始 butnPlay.setOnClickListener(new ImageButton.OnClickListener() { @Override public void onClick(View v) //播放按钮 { try { if(mplayer == null) { showMessage("无媒体文件..."); return; } if(isStopd == true) //停止后按播放键 { //停止播放后,会释放资源,要重新加载MP3 loadMediaFile(); isStopd = false; } if(mplayer.isPlaying()) //播放时按播放键 { showMessage("正在播放.."); return; } isPaused = false; //暂停后按播放键 mplayer.start(); //开始播放,或在暂停后会继续播放 showMessage("开始播放..."); } catch (Exception e) { showMessage("播放发生异常..."+e.getMessage()); e.printStackTrace(); } } }); //【按钮】暂停 butnPause.setOnClickListener(new ImageButton.OnClickListener() { @Override public void onClick(View v) { try { if(mplayer == null) { showMessage("无媒体文件..."); return; } if(isStopd == true) //停止后按暂停键 { showMessage("还没有播放..."); return; } if (isPaused==true) //暂停后按暂停键 { mplayer.start(); isPaused = false; showMessage("继续播放!"); } else { mplayer.pause(); isPaused=true; showMessage("暂停播放..."); } } catch (Exception e) { showMessage("暂停异常..."); e.printStackTrace(); } } }); //【按钮】停止 butnStop.setOnClickListener(new ImageButton.OnClickListener() { @Override public void onClick(View v) { try { if(mplayer == null) { showMessage("无媒体文件..."); return; } if(isStopd == true) //停止后按暂停键 { showMessage("已经停止播放..."); return; } mplayer.stop(); mplayer.release(); isStopd = !false; showMessage("停止播放..."); } catch (Exception e) { showMessage("停止发生异常..."); e.printStackTrace(); } } }); //【事件】播放完毕 mplayer.setOnCompletionListener( new MediaPlayer.OnCompletionListener() { @Override//覆盖文件播出完毕事件 public void onCompletion(MediaPlayer arg0) { try { mplayer.release(); //解除资源与MediaPlayer的赋值关系 让资源可以为其它程序利用 showMessage("音乐播发结束!"); }catch (Exception e) { showMessage(e.toString()); e.printStackTrace(); } } }); //【事件】播放异常 mplayer.setOnErrorListener(new MediaPlayer.OnErrorListener() { @Override//覆盖错误处理事件 public boolean onError(MediaPlayer arg0, int arg1, int arg2) { try { mplayer.release(); //发生错误时也解除资源与MediaPlayer的赋值 showMessage("播放发生异常!"); } catch (Exception e) { showMessage(e.toString()); e.printStackTrace(); } return false; } }); } //显示消息,也用于调试 void showMessage(String msg) { msgShow.setText(msg); } } 7 MediaPlayer 常用方法介绍 方法:create(Context context, Uri uri) 通过Uri创建一个多媒体播放器。 方法:create(Context context, int resid) 通过资源ID创建一个多媒体播放器 方法:create(Context context, Uri uri, SurfaceHolder holder)通过Uri和指定 SurfaceHolder 【抽象类】 创建一个多媒体播放器 方法: getCurrentPosition() 得到当前播放位置 方法: getDuration() 得到文件的时间 方法:getVideoHeight() 得到视频的高度 方法:getVideoWidth() 得到视频的宽度 方法:isLooping() 是否循环播放 方法:isPlaying() 是否正在播放 方法:pause() 暂停 方法:prepare() 准备同步 方法:prepareAsync() 准备异步 方法:release() 释放 MediaPlayer 对象 方法:reset() 重置 MediaPlayer 对象 方法:seekTo(int msec) 指定播放的位置(以毫秒为单位的时间) 方法:setAudioStreamType(int streamtype) 指定流媒体的类型 方法:setDataSource(String path) 设置多媒体数据来源【根据 路径】 方法:setDataSource(FileDescriptor fd, long offset, long length)设置多媒体数据来源【根据 FileDescriptor】 方法:setDataSource(FileDescriptor fd) 设置多媒体数据来源【根据 FileDescriptor】 方法:setDataSource(Context context, Uri uri)设置多媒体数据来源【根据 Uri】 方法:setDisplay(SurfaceHolder sh) 设置用 SurfaceHolder 来显示多媒体 方法:setLooping(boolean looping) 设置是否循环播放 事件:setOnBufferingUpdateListener(MediaPlayer.OnBufferingUpdateListener listener) 网络流媒体的缓冲监听 事件:setOnCompletionListener(MediaPlayer.OnCompletionListener listener) 网络流媒体播放结束监听 事件:setOnErrorListener(MediaPlayer.OnErrorListener listener) 设置错误信息监听 事件:setOnVideoSizeChangedListener(MediaPlayer.OnVideoSizeChangedListener listener)视频尺寸监听 方法:setScreenOnWhilePlaying(boolean screenOn) 设置是否使用 SurfaceHolder 显示 方法:setVolume(float leftVolume, float rightVolume) 设置音量 方法:start() 开始播放 方法:stop() 停止播放
Java中mediaplayer_MediaPlayer-基本使用方法.java
最新推荐文章于 2024-06-29 03:40:12 发布