分类: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 视频播放的更多相关文章

  1. android实现控制视频播放次数

    android实现控制视频播放次数,实质就是每个视频片段播放完后,通过MediaPlayer设置监听器setOnCompletionListener监听视频播放完毕,用Handler发送消息再次激活视 ...

  2. Android几种视频播放方式,VideoView、SurfaceView+MediaPlayer、TextureView+MediaPlayer,以及主流视频播放器开源项目

    简单的说下一Android的几种视频播放功能: 1.VideoView:最简单的视频播放 <FrameLayout xmlns:android="http://schemas.andr ...

  3. android 自己定义视频播放器之2/1

    非常久没更新博客,相信大家年后都比較忙. 今天给大家带来了一款视频播放器,首先确认的得有几点. 1.首先得有个播放视频的view. 2.加点额外功能进去左边上下滑动调节亮度,右边上下滑动调节声量: 3 ...

  4. 开源安卓Android流媒体音视频播放器实现声音自动停止、恢复、一键静音功能源码

    本文转自EasyDarwin团队John的博客:http://blog.csdn.net/jyt0551/article/details/60802145 我们在开发安卓Android流媒体音视频播放 ...

  5. Android开发 VideoView视频播放详解

    前言 VideoView是Android主要的视频播放View,它其实是对MediaPlayer的再次封装.如果你已经了解过MediaPlayer在使用VideoView是十分简单的.如果你想先了解M ...

  6. android 全屏视频播放(SurfaceView + MediaPlayer)

    介绍个第三方: JieCaoVideoPlayer 实现Android的全屏视频播放,支持完全自定义UI.手势修改进度和音量.hls.rtsp,设置http头信息,也能在ListView.ViewPa ...

  7. 玩转Android之在线视频播放控件Vitamio的使用

    其实Android中自带的MediaPlayer本身就能播放在线视频,MediaPlayer结合SurfaceView播放在线视频也是不错的选择(如果你没有性能或者用户体验上的要求),关于MediaP ...

  8. 分享几个不错的Android开源音视频播放器

    整理了一下Github上几个开源的音视频播放器项目,有兴趣的同学可以clone代码去研究学习.   UniversalMusicPlayer https://github.com/googlesamp ...

  9. Android高级_视频播放控件

    一.Android系统自带VideoView控件 1. 创建步骤: (1)自带视频文件放入res/raw文件夹下: (2)声明初始化VideoView控件: (3)创建视频文件Uri路径,Uri调用p ...

随机推荐

  1. TCP/TP编程 - 一个简单的Linux下C写的socket服务器客户端程序

    服务端: hello_server.c #include <stdio.h> #include <stdlib.h> #include <string.h> #in ...

  2. Ubuntu apt-get方式安装Subversion

    按照官方文档 http://subversion.apache.org/packages.html 使用apt-get安装方式: 1.安装Subversion: sudo apt-get instal ...

  3. plsql 快捷键配置

      plsql 快捷键配置 CreateTime--2018年4月23日17:41:45 Author:Marydon 功能快捷键 预设条目 中文解释 快捷键配置Edit/Undo 撤销 ctrl+z ...

  4. spring mvc上传、下载的实现

    下载 //下载 @RequestMapping(value="/download") public ResponseEntity<byte[]> download() ...

  5. HTTP协议详解之User Agent篇

    •User Agent:用户代理 指浏览器他的信息包括硬件平台.系统软件.应用软件和用户个人偏好.用户代理不仅仅指浏览器,还包括搜索引擎. •为什么所有浏览器的User Agent都带有Mozilla ...

  6. 腾讯云-Linux 基础入门

    Linux 基础入门 目录操作 任务时间:5min ~ 10min 创建目录 使用 mkdir 命令创建目录 mkdir $HOME/testFolder # $HOME 当前用户的家目录  root ...

  7. OpenWrt的开机启动服务(init scripts)

    参考 https://wiki.openwrt.org/doc/techref/initscripts 以一个简单的例子来说明 #!/bin/sh /etc/rc.common # Example s ...

  8. 小程序九:导航&地图&画布

    navigator 导航 属性名 类型 默认值 说明 url String   应用内的跳转链接 redirect Boolean false 是否关闭当前页面 hover-class String ...

  9. C++调用Java的Jar包

    一个简单需求:用C++调用Jar包. 实现基本思路:调用CreateProcess API来启动cmd.exe执行jar包. 调用类CJarAppCall. JarAppCall.h #pragma ...

  10. (二)Linux实操之——网络配置、进程管理、服务管理、组管理、YUM

    接上段   (一)Linux实操之——权限.任务调度.磁盘分区 4.网络配置 4.1 NAT模式的网络配置 目前我们采用的网络配置是NAT模式. windows下cmd通过 ipconfig 命令可以 ...