Android开发实现的简单媒体播放器功能示例

  

本文实例讲述了Android开发实现的简单媒体播放器功能。分享给大家供大家参考,具体如下:

  

  

因为播放视频需要很大的内存,所以必须使用surfaceview,

  

surfaceview里实现了双缓冲的功能,

  

     /* *   * @描述使用surfaceview创建视频   * @项目名称App_Basic   * @包名com.example.basic.media   * @类名MediaPlayerActivity   * @author chenlin   * @date 2013-3-25上午7:36:32   * @version 1.0   */公开课MediaPlayerActivity延伸BaseActivity {   私人媒体播放器媒体播放器;   私人按钮mBtnPlay;   私人按钮mBtnPause;   私人SurfaceView mSurfaceView;   私人int mCurrentPosition;   私人SeekBar SeekBar;   私人布尔isPlaying;   @Override   保护无效onCreate(包savedInstanceState) {   super.onCreate (savedInstanceState);   mSurfaceView=new SurfaceView(这个);   seekBar=new seekBar(这个);   seekBar。setOnSeekBarChangeListener(新OnSeekBarChangeListener () {   @Override   公共空间onStopTrackingTouch (SeekBar SeekBar) {   int进步=seekBar.getProgress ();   如果媒体播放器!=零,,isPlaying) {   mPlayer.seekTo(进步);   }   }   @Override   公共空间onStartTrackingTouch (SeekBar SeekBar) {//TODO自动生成方法存根   }   @Override   公共空间onProgressChanged (SeekBar SeekBar, int进步,布尔fromUser) {//TODO自动生成方法存根   }   });   mSurfaceView.getHolder () .setType (SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);   mSurfaceView.getHolder ()。addCallback(新的回调(){   @Override   公共空间surfaceDestroyed (SurfaceHolder持有人){   如果(媒体播放器!=零,,mPlayer.isPlaying ()) {   mCurrentPosition=mPlayer.getCurrentPosition ();   停止();   }   }   @Override   公共空间surfaceCreated (SurfaceHolder持有人){   如果(mCurrentPosition比;0){   玩(mCurrentPosition);   }   }   @Override   公共空surfaceChanged (SurfaceHolder持有人,int格式,int宽度,int高度){//TODO自动生成方法存根   }   });   }   公共空间玩(最后一个int currentPosition) {   尝试{   媒体播放器=新媒体播放器();   mPlayer.setAudioStreamType (AudioManager.STREAM_MUSIC);   Uri myUri=Uri.fromFile(新文件(“sdcard/mp3/1.mp3”));   mPlayer.setDataSource (getApplicationContext (), myUri);   mPlayer.setLooping(真正的);   mPlayer.setDisplay (mSurfaceView.getHolder ());   mPlayer.prepareAsync ();//mPlayer.prepare ();   mBtnPlay.setEnabled(假);   媒体播放器。setOnCompletionListener(新OnCompletionListener () {   @Override   公共空间onCompletion(媒体播放器mp) {   mBtnPlay.setEnabled(真正的);   mPlayer.release ();   }   });   媒体播放器。setOnErrorListener(新OnErrorListener () {   @Override   公共布尔onError(媒体播放器mp, int, int额外){   mBtnPlay.setEnabled(真正的);   mPlayer.release ();   isPlaying=false;   返回错误;   }   });   媒体播放器。setOnPreparedListener(新OnPreparedListener () {   公共空间onPrepared(媒体播放器mp) {   mPlayer.start ();   mPlayer.seekTo (currentPosition);   seekBar.setMax (mPlayer.getDuration ());   新线程(新Runnable () {   @Override   公共空间run () {   isPlaying=true;   而(isPlaying) {   seekBar.setProgress (mPlayer.getCurrentPosition ());   SystemClock.sleep (500);   }   }   });   }   });   }捕捉(异常e) {   e.printStackTrace ();   }   }   公共空间暂停(){   如果(“接续“.equals (mBtnPause.getText () .toString ())) {   mBtnPause.setText(“暂停”);   mPlayer.start ();   返回;   }   如果媒体播放器!=零,,mPlayer.isPlaying ()) {   mPlayer.pause ();   mBtnPause.setText(“继续”);   返回;   }   }   公共空间重置(){   如果媒体播放器!=零,,mPlayer.isPlaying ()) {   mPlayer.seekTo (0);   返回;   }   玩(0);   }   公共空间停止(){   如果媒体播放器!=零,,mPlayer.isPlaying ()) {   mPlayer.stop ();   mPlayer.release ();   媒体播放器=零;   mBtnPlay.setEnabled(真正的);   isPlaying=false;   }   }   }      之前      

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android多媒体操作技巧汇总(音频,视频,录音等)》,《Android开发入门与进阶教程》、《Android视图视图技巧总结》,《Android编程之活动操作技巧总结》,《Android文件操作技巧汇总》、《Android资源操作技巧汇总》及《安卓控件用法总结》

Android开发实现的简单媒体播放器功能示例