1. public class Mymedia extends Activity implements
  2. OnBufferingUpdateListener,
  3. OnCompletionListener,
  4. MediaPlayer.OnPreparedListener,
  5. SurfaceHolder.Callback
  6. {
  7. private static final String TAG = "Mymedia ";
  8. private int mVideoWidth;
  9. private int mVideoHeight;
  10. private MediaPlayer mMediaPlayer;
  11. private SurfaceView mPreview;
  12. private SurfaceHolder holder;
  13. private String path;
  14. public void onCreate(Bundle icicle)
  15. {
  16. super.onCreate(icicle);
  17. setContentView(R.layout.main);
  18. mPreview = (SurfaceView) findViewById(R.id.surface);
  19. /* 得到SurfaceHolder对象 */
  20. holder = mPreview.getHolder();
  21. /* 设置回调函数 */
  22. holder.addCallback(this);
  23. /* 设置风格 */
  24. holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
  25. }
  26. private void playVideo()
  27. {
  28. try
  29. {
  30. path = "http://www.dubblogs.cc:8751/android/Test/Media/3gp/test.3gp";
  31. //path = "/sdcard/test.3gp";
  32. /* 构建MediaPlayer对象 */
  33. mMediaPlayer = new MediaPlayer();
  34. /* 设置媒体文件路径 */
  35. mMediaPlayer.setDataSource(path);
  36. /* 设置通过SurfaceView来显示画面 */
  37. mMediaPlayer.setDisplay(holder);
  38. /* 准备 */
  39. mMediaPlayer.prepare();
  40. /* 设置事件监听 */
  41. mMediaPlayer.setOnBufferingUpdateListener(this);
  42. mMediaPlayer.setOnCompletionListener(this);
  43. mMediaPlayer.setOnPreparedListener(this);
  44. mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
  45. }
  46. catch (Exception e)
  47. {
  48. Log.e(TAG, "error: " + e.getMessage(), e);
  49. }
  50. }
  51. public void onBufferingUpdate(MediaPlayer arg0, int percent)
  52. {
  53. Log.v(TAG, "onBufferingUpdate percent:" + percent);
  54. }
  55. public void onCompletion(MediaPlayer arg0)
  56. {
  57. Log.v(TAG, "onCompletion called");
  58. }
  59. public void onPrepared(MediaPlayer mediaplayer)
  60. {
  61. Log.v(TAG, "onPrepared called");
  62. mVideoWidth = mMediaPlayer.getVideoWidth();
  63. mVideoHeight = mMediaPlayer.getVideoHeight();
  64. if (mVideoWidth != && mVideoHeight != )
  65. {
  66. /* 设置视频的宽度和高度 */
  67. holder.setFixedSize(mVideoWidth, mVideoHeight);
  68. /* 开始播放 */
  69. mMediaPlayer.start();
  70. }
  71. }
  72. /* 更改时出发的事件 */
  73. public void surfaceChanged(SurfaceHolder surfaceholder, int i, int j, int k)
  74. {
  75. Log.v(TAG, "surfaceChanged called");
  76. }
  77. /* 销毁 */
  78. public void surfaceDestroyed(SurfaceHolder surfaceholder)
  79. {
  80. Log.v(TAG, "surfaceDestroyed called");
  81. }
  82. /* 当SurfaceHolder创建时触发 */
  83. public void surfaceCreated(SurfaceHolder holder)
  84. {
  85. Log.v(TAG, "surfaceCreated called");
  86. playVideo();
  87. }
  88. /* 销毁 */
  89. @Override
  90. protected void onDestroy()
  91. {
  92. super.onDestroy();
  93. if (mMediaPlayer != null)
  94. {
  95. mMediaPlayer.release();
  96. mMediaPlayer = null;
  97. }
  98. }
  99. }
  1. 主要是这段哈:
  2. public void onPrepared(MediaPlayer mediaplayer)
  3. {
  4. Log.v(TAG, "onPrepared called");
  5. mVideoWidth = mMediaPlayer.getVideoWidth();
  6. mVideoHeight = mMediaPlayer.getVideoHeight();
  7. if (mVideoWidth != && mVideoHeight != )
  8. {
  9. /* 设置视频的宽度和高度 */
  10. holder.setFixedSize(mVideoWidth, mVideoHeight);
  11. /* 开始播放 */
  12. mMediaPlayer.start();
  13. }
  14. }

Android SurfaceView实现全屏播放例子的更多相关文章

  1. audio与video控件/标签的隐藏,iso/Android下自动全屏播放,短暂黑屏问题

    (一)audio音频标签 <audio src="xxx.mp3"></audio> (二)video视频标签 <video src="xx ...

  2. [转]Android WebView播放视频(包括全屏播放),androidwebview

    Android WebView播放视频(包括全屏播放),androidwebview 最近项目开发中用到了WebView播放视频的功能,总结了开发中犯过的错误,这些错误在开发是及容易遇到的,所以我这里 ...

  3. Android为TV端助力 集成第三方播放器,实现全屏播放

    下面这Demo链接:Android实现全屏播放,各种格式支持直播,点播,不收费!

  4. Android之针对WebView的全屏播放

    转载请标明转载处:http://bbs.csdn.net/topics/390839259 本人刚学android,菜鸟一个,第一次写帖子,最近因为项目要用webview加载html5的视频,开始不能 ...

  5. 解决video标签在微信中强制全屏、微信全屏播放(Android和IOS)

    在video标签中加上代码: x5-playsinline="true" webkit-playsinline="true" playsinline=" ...

  6. 用原生VideoView进行全屏播放时的问题

    之前参加了一个课程,里面有一节讲到了用视频作为启动界面.讲师用的是自定义VideoView,重写onMeasure方法,因为原生的VideoView在那情况下不能实现全屏播放.当时没有深入研究,现在补 ...

  7. 腾讯X5内核使用详解(X5内核播放器使用如何去除控制栏全屏播放)以及一些注意事项

    例子下载地址 https://www.lanzous.com/i2zsv5g      GIT就不用了麻烦的不行 本人安卓刚学 就上X5内核弄了老长时间由于对maven 和idea不熟悉刚开始导包都是 ...

  8. iphone H5视频行内播放(禁止全屏播放)

    一般用户都知道,ios在网页点击视频播放时,视频会弹出全屏播放框. video标签的playsinline.webkit-playsinline标记根本就不会起作用. 还有传闻说对于没有声音的视频不会 ...

  9. HTML5新标签video在iOS上默认全屏播放

    今天做一个app时发现一个问题,应用html5中的video标签加载视频,在Android手机上默认播放大小,但是换成iPhone手机上出问题了,默认弹出全屏播放,查找了好多论坛,都没有谈论这个的.然 ...

随机推荐

  1. 使用resumable.js上传大文件(视频)兵转换flv格式

    前台代码 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Video.asp ...

  2. Linq 中的TakeWhile 和 SkipWhile

    这两个概念容易搞混 理解了一番后 在这里写下便于记忆 SkipWhile 可以理解为如果条件满足  就一直跳过   知道不满足后 就取剩下的所有元素(后面的不会再判断) TakeWhile 可以理解为 ...

  3. HDU 4430 Yukari's Birthday(二分)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4430 题目大意:给定n个蜡烛,围绕蛋糕的中心插同心圆,从里往外分别是第1圈.第2圈....第r圈,第 ...

  4. SQL 不同的数据类型

    SQL 不同的数据类型 1.SQL TEXT 2.SQL VARCHAR(SIZE) VARCHAR(X) Case: user name, email, country, subject, pass ...

  5. 九度OJ 1120 全排列 -- 实现C++STL中next_permutation()

    题目地址:http://ac.jobdu.com/problem.php?pid=1120 题目描述: 给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列. 我们假设对于小写字母有'a' ...

  6. poj 3783 Balls 动态规划 100层楼投鸡蛋问题

    作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4098409.html 题目链接:poj 3783 Balls 动态规划 100层楼投鸡蛋问题 ...

  7. opensuse安装mysql-workbench

    首先安装好mysqlserver,做本地测试其实不用安装mysqlclient. 到http://software.opensuse.org/package/mysql-workbench 下载相应版 ...

  8. NFS挂载及写入故障

    最近在做架构时,分离出来一台图片服务器,图片服务器是通过NFS(网络文件系统)给两台web服务器提供图片存储的,在编辑NFS配置文件(/etc/exports)时:想了一下,允许访问NFS共享目录的范 ...

  9. python学习_应用pickle模块封装和拆封数据对象

    学习文件数据处理的时候了解到有pickle模块,查找官方文档学习了一些需要用到的pickle内容. 封装是一个将Python数据对象转化为字节流的过程,拆封是封装的逆操作,将字节文件或字节对象中的字节 ...

  10. 2014年度辛星html教程夏季版第七节

    经过前面六节的学习,我们大致清楚了HTML教程中的基础内容,那么接下来我们开始继续向后推进,可以说,下面我们介绍一下HTML中的区块. ***************区块*************** ...