文档章节

android开发笔记之多媒体—VideoView播放视频

Mr_Nice
 Mr_Nice
发布于 2016/05/22 20:01
字数 1072
阅读 15
收藏 0
点赞 2
评论 0

——使用VideoView播放视频

效果:

使用步骤:

1)在布局文件中定义VideoView的组件

2)调用setVideoPath(path)指定要播放的资源或者调用setVideoURI(Uri uri)加载uri对应的视频。

3)调用VideoView中的start,stop,pause方法控制视频播放

4)和MediaController类一起使用,它可以提供一个友好的图形控制界面,              
    MediaController mc = new MediaController(this);//设置播放控制器     
    video.setMediaController(mc);设置播放控制器来控制其播放

注意:VideoView需要标准mp4,3gp的视频。否则无法播放

公共方法

public boolean canPause ()

(译者注:判断是否能够暂停播放视频)

public boolean canSeekBackward ()

(译者注:判断是否能够倒退)

public boolean canSeekForward ()

(译者注:判断是否能够快进)

public int getBufferPercentage ()

(译者注:获得缓冲区的百分比)

public int getCurrentPosition ()

(译者注:获得当前的位置)

public int getDuration ()

(译者注:获得所播放视频的总时间)

public boolean isPlaying ()

(译者注:判断是否正在播放视频)

public boolean onKeyDown (int keyCode, KeyEvent event)

KeyEvent.Callback.onKeyMultiple() 的默认实现。如果视图可用并可按, 当按下 KEYCODE_DPAD_CENTER 或 KEYCODE_ENTER 时执行视图的按下事件。

参数

keyCode 表示按下的键的、在 KEYCODE_ENTER 中定义的键盘代码

event KeyEvent 对象,定义了按钮动作

返回值

如果处理了事件,返回真。如果允许下一个事件接受器处理该事件,可以返回假

public boolean onTouchEvent (MotionEvent ev)

实现该方法来处理触屏事件。

参数

event 触屏事件

返回值

如果事件已经处理返回True,否则返回false。

public boolean onTrackballEvent (MotionEvent ev)

实现这个方法去处理轨迹球的动作事件,轨迹球相对于上次事件移动的位置能用MotionEvent.getX() 和 MotionEvent.getY()函数取回。对应用户按下一次方向键, 他们通常作为一次移动处理(为了表现来自轨迹球的更小粒度的移动信息,他们返回小数)。

参数

ev 动作的事件

public void pause ()

(译者注:使得播放暂停)

public int resolveAdjustedSize (int desiredSize, int measureSpec)

(译者注:取得调整后的尺寸。如果measureSpec对象传入的模式是UNSPECIFIED那么返回的是desiredSize。如果measureSpec对象传入的模式是AT_MOST,返回的将是desiredSize和measureSpec对象的尺寸两者中最小的那个。如果measureSpec对象传入的模式是EXACTLY,那么返回的是measureSpec对象中的尺寸大小值。

关于MeasureSpec类的额外说明:MeasureSpec是一个android.view.View的内部类。它封装了从父类传送到子类的布局要求信息。每个MeasureSpec对象描述了控件的高度或者宽度。MeasureSpec对象是由尺寸和模式组成的,有3个模式:UNSPECIFIED、EXACTLY、AT_MOST,这个对象由MeasureSpec.makeMeasureSpec()函数创建。)

public void resume ()

(译者注:恢复挂起的播放器)

public void seekTo (int msec)

(译者注:设置播放位置)

public void setMediaController (MediaController controller)

(译者注:设置媒体控制器)

public void setOnCompletionListener (MediaPlayer.OnCompletionListener l)

注册在媒体文件播放完毕时调用的回调函数。

参数

l 要执行的回调函数

public void setOnErrorListener (MediaPlayer.OnErrorListener l)

注册在设置或播放过程中发生错误时调用的回调函数。如果未指定回调函数, 或回调函数返回假,VideoView 会通知用户发生了错误。

参数

l 要执行的回调函数

public void setOnPreparedListener (MediaPlayer.OnPreparedListener l)

注册在媒体文件加载完毕,可以播放时调用的回调函数。

参数

l 要执行的回调函数

public void setVideoPath (String path)

(译者注:设置视频文件的路径名)

public void setVideoURI (Uri uri)

(译者注:设置视频文件的统一资源标识符)

public void start ()

(译者注:开始播放视频文件)

public void stopPlayback ()

(译者注:停止回放视频文件)

public void suspend ()

(译者注:挂起视频文件的播放)

一般我们播放视频的时候都会横屏看比较好看,这样的话需要在配置文件中(AndroidManifest.xml)配置下:

这里写图片描述

代码:

public class MainActivity extends Activity {
    private VideoView videoView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        videoView = (VideoView) findViewById(R.id.videoView);
        MediaController mc = new MediaController(this);
        videoView.setMediaController(mc);
        videoView.setVideoPath("/sdcard/areyouok.3gp");
    }

    public void start(View view) {
        videoView.start();
    }
    public void stop(View view) {
        videoView.pause();
    }
}

记得加上权限:

    <uses-permission android:name="android.permission.MEDIA_CONTENT_CONTROL"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

© 著作权归作者所有

共有 人打赏支持
Mr_Nice
粉丝 0
博文 47
码字总数 39947
作品 0
广州
openGL+GLSurfaceView和MediaPlayer+GLSurfaceView与视频

Android MediaPlayer+SurfaceView播放视频(附Demo)- http://blog.csdn.net/junzia/article/details/52704129 在播放网络上的视频流时,Android原生的MediaPlayer支持两种协议,HTTP和RTSP,...

shareus ⋅ 2017/09/23 ⋅ 0

Android使用VideoView播放网络视频

Android使用VideoView播放网络视频 Android支持播放网络上的视频。在播放网络上的视频时,牵涉到视频流的传输,往往有两种协议,一种是HTTP,一种是RTSP。这 两种协议最大的不同是,HTTP协议...

rainy86 ⋅ 2014/07/07 ⋅ 0

直播,音视频编码器和解码器(EasyDarwin)-Android

使用摄像头采集视频数据,并通过MediaCodec进行H264编码,之后打包成RTSP格式并上传的。 TextuewView也提供了一个setTransform方法,该方法接收一个matrix参数,使用该参数对当前的渲染内容进...

shareus ⋅ 05/18 ⋅ 0

说说 Android 中如何操作音频与视频文件

1 音频 在 Android 中播放音频文件用的是 MediaPlayer 类,它提供了一些较为常用的控制方法。 工作流程如下: 创建 MediaPlayer 对象。 设置音频文件路径。 进入准备状态。 开始播放音频。 ...

deniro ⋅ 06/03 ⋅ 0

android之多媒体篇(一)

Android 4.0.3(Api Level 15)支持的多媒体格式。 注意:有些设备可能支持其他的文件格式。 1.Audio AAC LC/LTP、HE-AACv1(AAC+)、AMR-NB、AMR-WB、MP3、MIDI、Ogg Vorbis、PCM/WAVE、FLAC(...

Chanimalx ⋅ 2013/03/29 ⋅ 0

Android - 简单使用VideoView播放MP4

使用VideoView播放MP4 实现简单的播放功能,播放手机本地的MP4文件。不依赖任何第三方框架,不添加任何防腐剂。 添加一个系统自带的控制条。 相关代码请参阅: https://github.com/RustFishe...

RustFisher ⋅ 05/27 ⋅ 0

Android中文API(125) —— VideoView

结构 继承关系 public class VideoView extends SurfaceView implements MediaController.MediaPlayerContro java.lang.Object android.view.View android.view.SurfaceView android.widget......

walb呀 ⋅ 2017/12/05 ⋅ 0

Android简易实战教程--第四十一话《vitamio网络收音机》

在Android初级教程专栏里面,介绍了Android原生的VideoView和vitamio框架Android视频媒体相关,VideoView和开源框架vitamio 。并演示了播放网络视频的对应的Demo,本篇以小案例的方式,使用v...

qq_32059827 ⋅ 2016/11/12 ⋅ 0

利用onSaveInstanceState()方法保存Activity状态

Activity里的onSaveInstanceState()方法,虽然系统会自动调用它来保存Activity的一些数据,但当除它默认要保存的数据外,我们还要保存一些其他数据的时候, 我们就需要覆盖onSaveInstanceSta...

丁佳辉 ⋅ 2015/10/20 ⋅ 0

[Android学习笔记八] 使用VideoView屏幕方向发生变化,视频方向自动切换

一个Activity主要用来做播放视频使用,并且是全屏播放的话,主要采用横屏(Landscape orientation 显示宽度大于高度)显示视频,那么可以指定Activity的属性android:screenOrientation="land...

secondriver ⋅ 2015/12/01 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

R计算IV

参考文章 #读取文件 rawdata = read.csv("/path/to/csv/file",header=T) colnames(rawdata)[18] <- "y" //重命名因变量y #数据分区 训练集测试集 trainIdx <- sample(nrow(rawdata), round(......

火力全開 ⋅ 20分钟前 ⋅ 0

SQL老司机,在SQL中计算 array & map & json数据

摘要: 场景 通常,我们处理数据,一列数据类型要么是字符串,要么是数字,这些都是primitive类型的数据。 场景 通常,我们处理数据,一列数据类型要么是字符串,要么是数字,这些都是primi...

阿里云云栖社区 ⋅ 20分钟前 ⋅ 0

SQL老司机,在SQL中计算 array & map & json数据

摘要: 场景 通常,我们处理数据,一列数据类型要么是字符串,要么是数字,这些都是primitive类型的数据。 场景 通常,我们处理数据,一列数据类型要么是字符串,要么是数字,这些都是primi...

猫耳m ⋅ 31分钟前 ⋅ 0

关于ireport自定义变量类型为list的时候

自己摸石头过河,我真的应该去趟市中心图书馆,借本真正靠谱的教材 网上的东西,只有0.01%是有用的,还有0.99%是垃圾,剩下的99%是垃圾的复制品。。 哎!~ 问题是这样的,报表带sql,从db中获...

炑炑milina ⋅ 31分钟前 ⋅ 0

Spring mvc ContextLoaderListener 原理解析

对于熟悉Spring MVC功能,首先应从web.xml 开始,在web.xml 文件中我们需要配置一个监听器 ContextLoaderListener,如下。 <!-- 加载spring上下文信息,最主要的功能是解析applicationContex...

轨迹_ ⋅ 32分钟前 ⋅ 0

阿里云发布企业数字化及上云外包平台服务:阿里云众包平台

摘要: 阿里云正式发布旗下众包平台业务(网址:https://zhongbao.aliyun.com/),支持包括:网站定制开发,APP、电商系统等软件开发,商标、商品LOGO、VI、产品包装设计、营销推广、大数据人...

阿里云官方博客 ⋅ 34分钟前 ⋅ 0

Redis安装异常解决办法

官网地址:http://redis.io/ 官网下载地址:http://redis.io/download 1. 下载Redis源码(tar.gz),并上传到Linux 2. 解压缩包:tar zxvf redis-2.8.17.tar.gz 3. 进入解压缩后的文件夹:c...

slagga ⋅ 38分钟前 ⋅ 0

006. 深入JVM学习—年轻代

1. 年轻代图片 年轻代(Young)属于JVM堆内存空间的一个组成部分 所有使用关键字new新实例化的对象一定会在伊甸园区进行保存,而对于存活区保存的一定是已经在伊甸园区存在一段时间并且经过了...

影狼 ⋅ 39分钟前 ⋅ 0

如何成为一个合格的程序员

偶尔的,我会被人问道:如何成为一名优秀的程序员,更或者,如何成为一名程序员。每次人们问起,我都力图给出不同的答案。因此,我的答案是各种各样的。下面就是我认为的成为一名优秀的程序员...

柳猫 ⋅ 40分钟前 ⋅ 0

cups error_log日志暴增

日志内容 File \"/usr/lib/cups/notifier/dbus\" has insecure permissions 解决(未验证适用范围) sudo service cups stopsudo rm /etc/cups/subscriptions.conf*sudo rm -r /var/cac......

一介码夫_Hum ⋅ 44分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部