Java中mediaplayer_MediaPlayer-基本使用方法.java

文    件: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()   停止播放

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值