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. 浅析调用JSR303的validate方法, 验证失败时抛出ConstraintViolationException

    废话不多说,直接进入正题:如何使用JSR303的validate,进行数据校验,失败后直接抛出异常加入流转信息中,并在form页面提示出来. 首先我们为了启用验证,需要向 项目中添加Bean验证的实现 ...

  2. AQS 框架之 Unsafe 源码详解

    ■ 前言 之前 LockSupport那篇已经叙述了是线程阻塞工具类,其底层由 Unsafe 实现,即 park(), unpark() 方法,获取指针偏移量,并操纵内存.本篇主要介绍 Unsafe ...

  3. Effective Java 之-----谨慎的覆盖clone方法

    1.概述 如果clone方法返回一个由构造器创建的对象,它就得到有错误的类.因此,如果覆盖了非final类中的clone方法,则应该返回一个通过调用super.clone得到的对象.如果类的所有超类都 ...

  4. 转换number为千分位计数形式js

    JS实现转换千分位计数 350000.00-------350,000.00 var num=0;function format (num) { return (num.toFixed(2) + '' ...

  5. Tomcat时区设置方法[转]

    最近被问到了关于Tomcat时区设置方法,还没碰到类似的问题,网上说是记录日志和定时任务时可能会出现,目前还未发现,先记录下来. 原文地址:http://blog.csdn.net/x_yp/arti ...

  6. 济南清北学堂游记 Day 1.

    快住手!这根本不是暴力! 刷了一整天的题就是了..上午三道题的画风还算挺正常,估计是第一天,给点水题做做算了.. rqy大佬AK了上午的比赛! 当时我t2暴力写挂,还以为需要用啥奇怪的算法,后来发现, ...

  7. BZOJ 4766: 文艺计算姬 [矩阵树定理 快速乘]

    传送门 题意: 给定一个一边点数为n,另一边点数为m,共有n*m条边的带标号完全二分图$K_{n,m}$ 求生成树个数 1 <= n,m,p <= 10^18 显然不能暴力上矩阵树定理 看 ...

  8. POJ 1625 Censored! [AC自动机 高精度]

    Censored! Time Limit: 5000MS   Memory Limit: 10000K Total Submissions: 9793   Accepted: 2686 Descrip ...

  9. POJ 2079 Triangle [旋转卡壳]

    Triangle Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 9525   Accepted: 2845 Descript ...

  10. 【模板小程序】求第n个fibonacci数

    //fibonacci,find the nth num. 1 1 2 3 5 8... #include <iostream> using namespace std; int fib( ...