1、在Android 中播放视频的方式有两种:



第一种方式是使用MediaPlayer 结合SurfaceView
来播放,通过MediaPlayer来控制视频的播放、暂停、进度等;

通过SurfaceView 来显示视频内容;

优点:灵活性高,可以进行自定义;

缺点:难度比较大;



第二种方式是使用VideoView 来播放,这个类其实也是继承了SurfaceView 类,并且实现了MediaController.

MediaPlayerController 这个用于控制媒体播放的接口,另外在VideoView上还有一个用于对媒体播放进行控制的面板,包括快进、快退、播放、暂停按钮以及一个进度条; 

优点:比较简单,可以直接进行使用;

缺点:灵活性不高;



2、下面介绍VideoView的使用方法:

setVideoViewPath(String path);

设置播放视频的路径;

setVideoURL(Uri uri);

设置视频的URI

start();                      
                                         开始播放;

seekTo(int msec);

定位;

pause();                      
                                         暂停播放;

  stop();                                                                停止播放;

  setMediaController(MediaController);        设置MediaController 对象;



媒体控制面版常用方法:MediaController:

  hide();                                隐藏MediaController;

  show();                                显示MediaController

  show(int timeout);        设置MediaController显示的时间,以毫秒计算,如果设置为0则一直到调用hide()时隐藏;



3、案例:实现视频播放效果:

java代码:

  1. package com.example.mutilmediaapp_videoview;
  2. import android.net.Uri;
  3. import android.os.Bundle;
  4. import android.app.Activity;
  5. import android.content.pm.ActivityInfo;
  6. import android.view.Menu;
  7. import android.view.Window;
  8. import android.view.WindowManager;
  9. import android.widget.MediaController;
  10. import android.widget.VideoView;
  11. public class MainActivity extends Activity {
  12. private VideoView video;
  13. protected void onCreate(Bundle savedInstanceState) {
  14. super.onCreate(savedInstanceState);
  15. /* 设置播放视频时候不需要的部分 *//* 以下代码需要写在setContentView();之前 */
  16. /* 去掉title */
  17. requestWindowFeature(Window.FEATURE_NO_TITLE);
  18. /* 设置全屏 */
  19. setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
  20. /* 设置屏幕常亮 *//* flag:标记 ; */
  21. getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
  22. setContentView(R.layout.main);
  23. /* 获取组件对象 */
  24. video = (VideoView) findViewById(R.id.videoView);
  25. /* 获取MediaController对象,控制媒体播放 */
  26. MediaController mc = new MediaController(this);
  27. video.setMediaController(mc);
  28. /* 设置URI , 指定数据 */
  29. video.setVideoURI(Uri.parse("/mnt/sdcard/aa.mp4"));
  30. /* 开始播放视频 */          video.start();
  31. /*  请求获取焦点 */
  32. video.requestFocus();
  33. }
  34. }

Android视频播放的两种方式介绍的更多相关文章

  1. 【转】在Android Studio中下载Android SDK的两种方式(Android Studio3.0、windows)

    在Android Studio中下载Android SDK的两种方式(Android Studio3.0.windows) 方式一.设置HTTP Proxy1. 打开Settings2. 点击HTTP ...

  2. android 定位的几种方式介绍

    [地理位置] android 定位的几种方式介绍 开发中对于地图及地理位置的定位是我们经常要用地,地图功能的使用使得我们应用功能更加完善,下面 www.androidkaifa.com 总结了一下网络 ...

  3. Android学习—下载Android SDK的两种方式

    在Android Studio中下载Android SDK的两种方式 Android studio下载地址:http://www.android-studio.org/ 方式一.设置HTTP Prox ...

  4. 将Eclipse代码导入到Android Studio的两种方式

    转: http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0104/2259.html 说到使用Android Studio,除了新建 ...

  5. Spring整合Struts的两种方式介绍

    1 使用Spring托管Struts Action 该种方式就是将Struts Action也视为一种Bean交给Spring来进行托管,使用时Struts的配置文件中配置的Action的classs ...

  6. 在Android Studio中下载Android SDK的两种方式(Android Studio3.0、windows)

    方式一:网站下载:https://androidsdkmanager.azurewebsites.net/SDKPlatform 方式二.设置HTTP Proxy1. 打开Settings2. 点击H ...

  7. 利用Selenium实现图片文件上传的两种方式介绍

    在实现UI自动化测试过程中,有一类需求是实现图片上传,这种需求根据开发的实现方式,UI的实现方式也会不同. 一.直接利用Selenium实现 这种方式是最简单的一种实现方式,但是依赖于开发的实现. 当 ...

  8. Android 编程下两种方式注册广播的区别

    常驻型广播 常驻型广播,当你的应用程序关闭了,如果有广播信息来,你写的广播接收器同样的能接收到,它的注册方式就是在你应用程序的AndroidManifast.xml 中进行注册,这种注册方式通常又被称 ...

  9. 转 Android 编程下两种方式注册广播的区别

    常驻型广播 常驻型广播,当你的应用程序关闭了,如果有广播信息来,你写的广播接收器同样的能接收到,它的注册方式就是在你应用程序的AndroidManifast.xml 中进行注册,这种注册方式通常又被称 ...

随机推荐

  1. 2018-02-02-解决IDE中无法忽略的非代码文件

    layout: post title: 2018-02-02-解决IDE中无法忽略的非代码文件 key: 20180202 tags: GIT 版本管理 modify_date: 2018-02-02 ...

  2. Java中的null值总结

    自我总结,有什么不对或不到位的地方,请指出,感激不尽! 目的:熟练掌握java中null值出现的情况,避免NullPointerException 代码环境准备:需要引入junit;将代码packag ...

  3. *C语言有关指针的变量声明中的几个易错点

    转至:http://my.oschina.net/ypimgt/blog/108265   Technorati 标签:  指针, typedef, const, define 我们都知道,至少听说过 ...

  4. int main()还是void main()

    按照新的C99标准,即使函数本身没有定义返回值,编译器也会加上,以返回给激发程序,运行状态.很多人甚至市面上的一些书籍,都使用了void main( ) ,其实这是错误的.C/C++ 中从来没有定义过 ...

  5. 浅谈最大流的Dinic算法

    PART 1 什么是网络流 网络流(network-flows)是一种类比水流的解决问题方法,与线性规划密切相关.网络流的理论和应用在不断发展,出现了具有增益的流.多终端流.多商品流以及网络流的分解与 ...

  6. php操作mongodb的常用函数

    连接mongodb: $mongoObj = new Mongo("127.0.0.1" , array( 'connect'=>true, 'persist'=>tr ...

  7. ABP官方文档翻译 7.1 后台Jobs和Workers

    后台Jobs和Workers 介绍 后台Jobs 关于Job持久化 创建后台Job 在队列中添加一个新Job 默认的后台Job管理器 后台Job存储 配置 禁用Job执行 异常处理 Hangfire集 ...

  8. [偏序关系与CDQ分治]【学习笔记】

    组合数学真是太棒了 $CDQ$真是太棒了(雾 参考资料: 1.<组合数学> 2.论文 课件 很容易查到 3.sro __stdcall 偏序关系 关系: 集合$X$上的关系是$X$与$X$ ...

  9. ThinkPHP删除栏目(单)

    当我们做一些网站项目的时候,都会遇到这样一类问题,删除一个栏目,而这个栏目又不是最底层栏目,也就是说,被删除的栏目拥有子栏目,这时,我们执行删除该栏目的命令,就需要将该栏目及其子栏目一并删除,因为我们 ...

  10. WPF ”真正的“高仿QQ

    时常可以在各种论坛 博客 看到 各种所谓的 高仿QQ. 说实话 越看越想笑呢.(PS:纯粹的 抨击 那些 不追求 UI 完美主义者) 例如:       本次模仿 采用 C# WPF XAML , 总 ...