【Android】20.2 视频播放
分类:C#、Android、VS2015;
创建日期:2016-03-11
一、简介
本节例子和上一节的音频播放例子相似,也是最简单的示例,比如并没有考虑视频播放过程中电话打入的情况,也没有考虑复杂的控制。总之,如果你希望进一步学习复杂的例子,首先要先把最核心的简单例子搞明白,否则你连基本的设计思路都不知道,直接看复杂的例子或者实际项目中的代码肯定“事倍功半”,主要原因是你做不到举一反三,只会照搬,稍微让你修改一下功能你就晕了。
实现视频播放的常见方式有:
1、用VideoView和MediaController类实现视频播放
常用,在布局文件中使用VideoView结合MediaController来实现对其控制。本节主要演示它的基本用法。
VideoView控件可以从各种不同的来源(如文件系统、网站)下载视频文件并将视频播放出来。该控件提供了各种控制选项,例如控制视频界面的大小、缩放、着色等。
如果需要更细粒度的控制,也可以用MediaPlayer类来实现。
2、用SurfaceView和MediaPlayer类实现视频播放
这是早期版本提供的办法,实现代码较多。对这种实现有兴趣的可参考其他资料。
二、基本用法示例
1、运行截图
下面的截图是单击【播放RAW下的视频】按钮后看到的视频播放效果。
单击【停止播放】按钮后,可继续单击【播放SD卡Download下的视频】按钮观察,这里就不再截图了。
2、设计步骤
(1)添加视频文件
由于只是为了演示,所以该例子Raw文件夹下和SD卡的Download文件夹下存放的是同一个视频文件(videoviewdemo.mp4)。
至于如何将文件复制到SD卡上,请参看【常见问题解答】。
(2)添加ch2002Main.axml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button
android:id="@+id/ch2002_btnRawStart"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="播放RAW下的视频" />
<Button
android:id="@+id/ch2002_btnSdcardStart"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="播放SD卡Dwonload下的视频" />
<Button
android:id="@+id/ch2002_btnStop"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="停止播放" />
<VideoView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/ch2002_videoView1"
android:layout_margin="20dp" />
</LinearLayout>
(3)添加ch2002MainActivity.cs
using Android.App;
using Android.Content;
using Android.OS;
using Android.Widget;
using Android.Net; namespace MyDemos.SrcDemos
{
[Activity(Label = "例20-2 视频播放基本用法")]
[IntentFilter(new[] { Intent.ActionMain }, Categories = new[] { ch.MyDemosCategory })]
public class ch2002MainActivity : Activity
{
VideoView mVideoView;
Button btnRawStart, btnSdcardStart, btnStop; protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState); SetContentView(Resource.Layout.ch2002Main);
mVideoView = FindViewById<VideoView>(Resource.Id.ch2002_videoView1);
btnRawStart = FindViewById<Button>(Resource.Id.ch2002_btnRawStart);
btnSdcardStart = FindViewById<Button>(Resource.Id.ch2002_btnSdcardStart); Uri rawUri = Uri.Parse($"android.resource://{PackageName}/{Resource.Raw.videoviewdemo}");
Uri sdcardUri = Uri.Parse($"{Environment.ExternalStorageDirectory.Name}/Download/videoviewdemo.mp4"); btnRawStart.Click += delegate
{
StartVideo(rawUri);
}; btnSdcardStart.Click += delegate
{
StartVideo(sdcardUri);
}; btnStop = FindViewById<Button>(Resource.Id.ch2002_btnStop);
btnStop.Click += delegate
{
mVideoView.StopPlayback();
ChangePlayingState(true, false);
};
} private void StartVideo(Uri uri)
{
mVideoView.SetVideoURI(uri);
mVideoView.SetMediaController(new MediaController(this));
mVideoView.Start();
ChangePlayingState(false, true);
} private void ChangePlayingState(bool startEnabled,bool stopEnabled)
{
btnRawStart.Enabled = btnSdcardStart.Enabled = startEnabled;
btnStop.Enabled = stopEnabled;
}
}
}
【Android】20.2 视频播放的更多相关文章
- android实现控制视频播放次数
android实现控制视频播放次数,实质就是每个视频片段播放完后,通过MediaPlayer设置监听器setOnCompletionListener监听视频播放完毕,用Handler发送消息再次激活视 ...
- Android几种视频播放方式,VideoView、SurfaceView+MediaPlayer、TextureView+MediaPlayer,以及主流视频播放器开源项目
简单的说下一Android的几种视频播放功能: 1.VideoView:最简单的视频播放 <FrameLayout xmlns:android="http://schemas.andr ...
- android 自己定义视频播放器之2/1
非常久没更新博客,相信大家年后都比較忙. 今天给大家带来了一款视频播放器,首先确认的得有几点. 1.首先得有个播放视频的view. 2.加点额外功能进去左边上下滑动调节亮度,右边上下滑动调节声量: 3 ...
- 开源安卓Android流媒体音视频播放器实现声音自动停止、恢复、一键静音功能源码
本文转自EasyDarwin团队John的博客:http://blog.csdn.net/jyt0551/article/details/60802145 我们在开发安卓Android流媒体音视频播放 ...
- Android开发 VideoView视频播放详解
前言 VideoView是Android主要的视频播放View,它其实是对MediaPlayer的再次封装.如果你已经了解过MediaPlayer在使用VideoView是十分简单的.如果你想先了解M ...
- android 全屏视频播放(SurfaceView + MediaPlayer)
介绍个第三方: JieCaoVideoPlayer 实现Android的全屏视频播放,支持完全自定义UI.手势修改进度和音量.hls.rtsp,设置http头信息,也能在ListView.ViewPa ...
- 玩转Android之在线视频播放控件Vitamio的使用
其实Android中自带的MediaPlayer本身就能播放在线视频,MediaPlayer结合SurfaceView播放在线视频也是不错的选择(如果你没有性能或者用户体验上的要求),关于MediaP ...
- 分享几个不错的Android开源音视频播放器
整理了一下Github上几个开源的音视频播放器项目,有兴趣的同学可以clone代码去研究学习. UniversalMusicPlayer https://github.com/googlesamp ...
- Android高级_视频播放控件
一.Android系统自带VideoView控件 1. 创建步骤: (1)自带视频文件放入res/raw文件夹下: (2)声明初始化VideoView控件: (3)创建视频文件Uri路径,Uri调用p ...
随机推荐
- Android 之Toast
Toast 是一个 View 视图,快速的为用户显示少量的信息. Toast 在应用程序上浮动显示信息给用户,它永远不会获得焦点,不影响用户的输入等操作,主要用于一些帮助 / 提示. Toast 最常 ...
- uni-app 为何package.json配置以后不会生成文件?
和微信小程序不同的是uni-app 配置步骤如下 小程序是新建json生成文件夹\文件 uni-app是新建文件生成json
- php之快速入门学习-5(常量)
PHP 5 常量 常量值被定义后,在脚本的其他任何地方都不能被改变. PHP 常量 常量是一个简单值的标识符.该值在脚本中不能改变. 一个常量由英文字母.下划线.和数字组成,但数字不能作为首字母出现. ...
- Linux一些基本命令一(学习笔记三)
菜鸟记录. 一.更改主机名 hostname 新的主机名 hostname ln0491 将主机名更改为ln0491 登出再登陆,就变为新的主机名 二.新建文件夹和删除 如:在当前路径新建data文件 ...
- Performance Testing
To test application performance, add rules using FiddlerScript to the OnBeforeResponse function (exc ...
- 在 Java SE 6 中监视和诊断性能问题
Java™ Platform, Standard Edition 6 (Java SE) 专注于提升性能,提供的增强工具可以管理和监视应用程序以及诊断常见的问题.本文将介绍 Java SE 平台中监视 ...
- Test Double
我不知道Test Double翻译成中文是什么,测试替身?Test Double就像是陈龙大哥电影里的替身,起到以假乱真的作用.在单元测试时,使用Test Double减少对被测对象的依赖,使得测试更 ...
- PHP 在Win下的安装
1:安装集成环境,Wamp或者Appserv.可以快速搭建测试环境. 2:分别下载安装 下载 PHP 从此处下载免费的 PHP:http://www.php.net/downloads.php 下载 ...
- SVN如何查看修改的文件记录
主要是有四个命令,svn log用来展示svn 的版本作者.日期.路径等等:svn diff,用来显示特定修改的行级详细信息:svn cat,取得在特定版本的某文件显示在当前屏幕:svn list, ...
- H5中JavaScript常用代码片段
/** * 批量替换方法,批量过滤特殊字符,通常用在通过后的各种编辑器添加的内容在App上编辑上使用 * james.wang 2016-11-11 * 使用方法:ReCont(Content,[&q ...