文档章节

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

Mr_Nice
 Mr_Nice
发布于 2016/05/22 20:01
字数 1072
阅读 16
收藏 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
广州
Android使用VideoView播放网络视频

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

rainy86
2014/07/07
0
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
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
0
android onSaveInstanceState

无意中留意到 onCreate(Bundle savedInstanceState) ,savedInstanceState究竟是什么,于是上网搜了搜 当某个activity变得“容易”被系统销毁时,该activity的onSaveInstanceState就会被执行,...

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

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

secondriver
06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

LINUX中如何查看某个端口是否被占用(转发)

LINUX中如何查看某个端口是否被占用 之前查询端口是否被占用一直搞不明白,问了好多人,终于搞懂了,现在总结下: 1.netstat -anp |grep 端口号 如下,我以3306为例,netstat -anp |grep 33...

覃大光
32分钟前
0
0
JBolt 1.5.0新版发布,升级到支持最新版JFinal和Jetty,实现了在线更新插件功能

JBolt是一个JFinal极速开发框架 定制版IDE插件 目前仅有Eclipse插件版,Idea插件版正在开发中。 JBolt的详细使用教程请移步到这里 =====版本1.5.0 更新内容 2018年10月13日10:41:52===== 注意...

山东-小木
35分钟前
0
0
laravel 微信支付

1.composer加载laravel微信支付第三方文件 composer require "overtrue/laravel-wechat:~4.0" composer require simplesoftwareio/simple-qrcode 1.3.* //composer生成二维码文件 2.改confi......

vio小黑
48分钟前
1
0
学习设计模式——抽象工厂模式

1. 认识抽象工厂模式 1. 定义:提供一个创建一系列相关或互相依赖的对象的接口,而无需指定它们具体的类。 2. 组成结构: AbstractFactory:抽象工厂类,定义创建一系列对象的操作接口 Fact...

江左煤郎
48分钟前
2
0
ES6的let块级作用域和变量不可提升导致一个比较容易出现的错误

今天在写NodeJS代码的时候出现一个变量一直提示未定义,简化后的代码如下: let param = 1;{ console.log(param);} 就在想,不至于啊。不是继承上层的声明吗? 继续看下去,发现原来...

MKjy
54分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部