Android VideoView
这两天公司要让做一个播放视频的小Demo,于是网上学习了下VideoView的使用方法。
先看布局文件,很简单 就是一个VideoView和两个ImageView
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context="${relativePackage}.${activityClass}" >
- <VideoView
- android:id="@+id/videoView1"
- android:layout_width="match_parent"
- android:layout_height="500dp"
- android:layout_alignParentLeft="true"
- android:layout_alignParentTop="true" />
- <ImageView
- android:id="@+id/image1"
- android:layout_width="160dp"
- android:layout_height="140dp"
- android:layout_below="@id/videoView1"
- android:src="@drawable/ic_launcher" />
- <ImageView
- android:layout_width="160dp"
- android:layout_height="140dp"
- android:layout_below="@id/videoView1"
- android:layout_toRightOf="@id/image1"
- android:src="@drawable/ic_launcher" />
- </RelativeLayout>
然后是MainActivity
这里面有一个搜索内存文件的方法
- package com.nick.videodemo;
- import java.io.File;
- import android.app.Activity;
- import android.media.MediaPlayer;
- import android.media.MediaPlayer.OnCompletionListener;
- import android.media.MediaPlayer.OnPreparedListener;
- import android.os.Bundle;
- import android.os.Environment;
- import android.widget.MediaController;
- import android.widget.VideoView;
- public class MainActivity extends Activity {
- private VideoView mVideoView;
- MediaController mediaController;
- private File file;
- private String key = "test.mp4"; // 关键字
- private File file1;
- private String pathString;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- mVideoView = (VideoView) findViewById(R.id.videoView1);
- mediaController = new MediaController(this);
- mVideoView.setMediaController(mediaController);
- file = new File(Environment.getExternalStorageDirectory().getPath());
- toSearchFiles(file);
- file1 = new File(pathString);
- if (file1.exists()) {
- mVideoView.setVideoPath(file1.getAbsolutePath());
- mediaController.setMediaPlayer(mVideoView);
- mVideoView.requestFocus();
- mVideoView.start();
- mVideoView.setOnPreparedListener(new OnPreparedListener() {
- @Override
- public void onPrepared(MediaPlayer mp) {
- mp.start();
- mp.setLooping(true);
- }
- });
- mVideoView.setOnCompletionListener(new OnCompletionListener() {
- @Override
- public void onCompletion(MediaPlayer mp) {
- mVideoView.setVideoPath(file1.getAbsolutePath());
- mVideoView.start();
- }
- });
- }
- }
- /**
- * 遍历 Files
- *
- * @param file
- */
- public void toSearchFiles(File file) {
- File[] files = file.listFiles();
- for (File tf : files) {
- if (tf.isDirectory()) {
- toSearchFiles(tf);
- } else {
- try {
- if (tf.getName().indexOf(key) > -1) {
- pathString = tf.getPath();
- }
- } catch (Exception e) {
- }
- }
- }
- }
- }
- mediaController = new MediaController(this); 是设置播放时候的控制器,比如快进暂停等。
这里面最主要的代码还是
- 34 mVideoView.setVideoPath(file1.getAbsolutePath());
- 35 mediaController.setMediaPlayer(mVideoView);
- 36 mVideoView.requestFocus();
- 37 mVideoView.start();
这个是把文件的路径赋给VideoView然后让mediacontroller控制这个VideoView,后面使其多的焦点并播放。
循环播放:
- 46 mVideoView.setOnCompletionListener(new OnCompletionListener() {
- 47
- 48 @Override
- 49 public void onCompletion(MediaPlayer mp) {
- 50 mVideoView.setVideoPath(file1.getAbsolutePath());
- 51 mVideoView.start();
- 52 }
- 53 });
- 54 }
这个是给VideoView设置播放完成后的监听器,如果播放完成则重新开始。- 上面就是简单地VideoView的使用方法,记录下方便以后学习和使用。
Android VideoView的更多相关文章
- Android VideoView简单播放视频
给Android VideoView一个文件目录,就可以直接播放智能设备中的视频文件,现在以播放事先用手机拍好并重命名的视频文件test.mp4为例.(1) 需要在布局文件中写一个ViedoView: ...
- Android VideoView播放视频
今天介绍一下Android的视频播放控件VideoView,下面介绍一下VideoView的使用步骤: 1.在界面布局中定义VideoView组件,或者在程序中创建VideoView组件. 2.调用V ...
- Android VideoView使用小记
在Android中播放视频一般采用VideoView,当然也可以自己使用MediaPlayer+SurfaceView,但是比较麻烦.这里记录一些我使用VideoView时的疑惑 1.如何监听播放完成 ...
- Android VideoView播放网络视频简介(转)
最近项目中用到了很多视频播放的地方,不管是聊天发送的视频消息,还是类似内涵段子的视频列表,都会涉及这些知识,不过网上的知识都很零散,一会找缓存方法,一会找预览图片的方法,一会找视频动态修改尺寸的方法, ...
- Android VideoView无法播放网络视频
今天学习Android播放视频和音频,其中在练习播放视频的时候无法播放网络视频,网络视频是别人发布在网上的,但是把视频放在本地是可以的,最后推测是没有开放网络的访问权限的问题,果然开放了之后就能正常访 ...
- Android videoview循环播放视频
如何在一个activity里实现videoview对一个文件夹下的所有视频文件顺序循环播放,当切换界面时暂停, 切换回来继续原来的视频播放呢.所谓的 自动循环播放就是监听到视频播放结束之后继续重新播放 ...
- Android ——VideoView禁止"无法播放该视频"弹窗
我们在使用videoView播放视频时,如果获取内容失败.网址不对.或者视频格式不对等,会弹出“无法播放该视频”的弹窗,阻塞用户使用. 这种情况,如果在一些自助服务类场合下,弹窗会造成十分不友好的用户 ...
- Android VideoView未解决,动态读取权限、BottomNavigationView的用法
昨天想写的,但是因为Video的毛病,是真找不出为啥了.百度也没用,学长也不清楚. 百度了那么久,大概得出结论,电脑的视频是不能用它来播放的... ..经过两天的奋斗,我居然搞定了,我的视频终于出来了 ...
- android videoView 加载等待
final Handler handler = new Handler(); Runnable runnable = new Runnable() { public void run() { int ...
随机推荐
- 8个经典的HTML5游戏在线试玩及源码学习
原文地址:http://www.oschina.net/news/32364/html5-games 游戏,毫无疑问是拿来供大家娱乐玩耍的,这也无可厚非,但是,今天给大家分享的8个HTML5游戏,在好 ...
- Unity3D内存释放
Unity3D内存释放 最近网友通过网站搜索Unity3D在手机及其他平台下占用内存太大. 这里写下关于Unity3D对于内存的管理与优化. Unity3D 里有两种动态加载机制:一个是Resourc ...
- GCD - Extreme (II)
uva11424: 题目:给出n,求gcd(1,2)+gcd(1,3)+gcd(2,3)+gcd(1,4)+gcd(2,4)+gcd(3,4)+...+gcd(1,n)+gcd(2,n)+...+gc ...
- 几个国外FMX网站 good
FireMonkey X – Amazing overview of FireMonkey FMX Feeds – All your FireMonkey news in one place FMX ...
- Kernel-Scheduler implementation
2033 const struct sched_class rt_sched_class = { 2034 .next = &fair_sched_class, 2035 .enqueue_t ...
- 【模拟】Codeforces 710A King Moves
题目链接: http://codeforces.com/problemset/problem/710/A 题目大意: 国际象棋标准8X8棋盘,国王能往周围8个方向走.输入国王的位置,输出当前国王能往几 ...
- 【模拟】Codeforces 671A Recycling Bottles
题目链接: http://codeforces.com/problemset/problem/671/A 题目大意: A和B在一张二维平面上,平面上有N个垃圾,垃圾桶只有一个在T,问把所有垃圾全扔进垃 ...
- C++使用模版技术将任意类型的数据转为某个类型的数据
将任意类型(int, float, 自定义的数据类型等等)的数据转换的某个类型C中储存,可以通过 将类型C的构造函数写成模版函数的形式,在C中将可以接收任意类型数据.如: class C{ templ ...
- STRUCTS 2 LABLE
{LJ?Dragon}[标题]structs2标签的作用 {LJ?Dragon}[Diary]2017年,愉快的开始:离别不一定总伤感,虽然只是安慰着自己......... 问与答 问题 在Strut ...
- Java同步工具类总结
先谈谈闭锁和栅栏的区别: 1.关键区别在于,所有线程必须同时到达栅栏位置,才能继续执行. 2.闭锁用于等待某一个事件的发生,举例:CountDownLatch中await方法等待计数器为零时,所有事件 ...