本文实例讲述了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开发实现的简单媒体播放器功能示例