博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android全屏监听,Android SurfaceView实现全屏播放例子
阅读量:5976 次
发布时间:2019-06-20

本文共 2211 字,大约阅读时间需要 7 分钟。

public classMymedia extends Activity implements

OnBufferingUpdateListener,

OnCompletionListener,

MediaPlayer.OnPreparedListener,

SurfaceHolder.Callback

{private static final String TAG = "Mymedia";private intmVideoWidth;private intmVideoHeight;privateMediaPlayer mMediaPlayer;privateSurfaceView mPreview;privateSurfaceHolder holder;privateString path;public voidonCreate(Bundle icicle)

{

super.onCreate(icicle);

setContentView(R.layout.main);

mPreview=(SurfaceView) findViewById(R.id.surface);/*得到SurfaceHolder对象*/holder=mPreview.getHolder();/*设置回调函数*/holder.addCallback(this);/*设置风格*/holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

}private voidplayVideo()

{try{

path= "http://www.dubblogs.cc:8751/android/Test/Media/3gp/test.3gp";//path = "/sdcard/test.3gp";

/*构建MediaPlayer对象*/mMediaPlayer= newMediaPlayer();/*设置媒体文件路径*/mMediaPlayer.setDataSource(path);/*设置通过SurfaceView来显示画面*/mMediaPlayer.setDisplay(holder);/*准备*/mMediaPlayer.prepare();/*设置事件监听*/mMediaPlayer.setOnBufferingUpdateListener(this);

mMediaPlayer.setOnCompletionListener(this);

mMediaPlayer.setOnPreparedListener(this);

mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

}catch(Exception e)

{

Log.e(TAG,"error:" +e.getMessage(), e);

}

}public void onBufferingUpdate(MediaPlayer arg0, intpercent)

{

Log.v(TAG,"onBufferingUpdate percent:" +percent);

}public voidonCompletion(MediaPlayer arg0)

{

Log.v(TAG,"onCompletion called");

}public voidonPrepared(MediaPlayer mediaplayer)

{

Log.v(TAG,"onPrepared called");

mVideoWidth=mMediaPlayer.getVideoWidth();

mVideoHeight=mMediaPlayer.getVideoHeight();if (mVideoWidth != 0 && mVideoHeight != 0)

{/*设置视频的宽度和高度*/holder.setFixedSize(mVideoWidth, mVideoHeight);/*开始播放*/mMediaPlayer.start();

}

}/*更改时出发的事件*/

public void surfaceChanged(SurfaceHolder surfaceholder, int i, int j, intk)

{

Log.v(TAG,"surfaceChanged called");

}/*销毁*/

public voidsurfaceDestroyed(SurfaceHolder surfaceholder)

{

Log.v(TAG,"surfaceDestroyed called");

}/*当SurfaceHolder创建时触发*/

public voidsurfaceCreated(SurfaceHolder holder)

{

Log.v(TAG,"surfaceCreated called");

playVideo();

}/*销毁*/@Overrideprotected voidonDestroy()

{

super.onDestroy();if (mMediaPlayer != null)

{

mMediaPlayer.release();

mMediaPlayer= null;

}

}

}

转载地址:http://xmiox.baihongyu.com/

你可能感兴趣的文章
CentOS 6.x 快速安装L2TP ***
查看>>
mysql主主复制(双主复制)配置步骤
查看>>
一篇文章能够看懂基础源代码之JAVA篇
查看>>
什么是大数据技术架构
查看>>
【分享】如何救援記憶卡中誤刪的資料
查看>>
北方计算机专修学院“展示自我 秀出风采” 网页创意设计大赛成功举办
查看>>
DNS解析相关实验:7台主机的恩怨情仇
查看>>
Goldengate双向复制配置
查看>>
Oracle官方内部MAA教程
查看>>
DNS相关配置
查看>>
Nginx-location配置
查看>>
扫描线
查看>>
设计模式--模板方法(Template Method)
查看>>
引入CSS的方式有哪些?link和@import的有何区别应如何选择【转载】
查看>>
MariaDB 和 MySQL 性能测试比较
查看>>
Restful Web Service初识
查看>>
This用法和闭包
查看>>
JSP页面获取系统时间
查看>>
L-1-19 Linux之RAID&分区&文件系统命令
查看>>
stat查找权限以数字形式显示
查看>>