android 播放视频示例<转>
2013-10-25 00:03
393 查看
http://byandby.iteye.com/blog/845125
由于Android平台由Google自己封装、设计、提供的Java Dalvik 在算法处理效率上无法与C/C++ 或 ARM ASM 相提并论,在描述或移植一些本地语言的解码器上显得无能为力,目前整个平台仅支持MP4 的 H.264、3GP 和 WMV 视频解析。
Android内置的 VideoView类可以快速制作一个系统播放器,VideoView主要用来显示一个视频文件,我们先开看看VideoView类的一些基本方法。
方法 说明
getBufferPercentage 得到缓冲的百分比
getCurrentPosition 得到当前播放的位置
getDuration 得到视频文件的时间
isPlaying 是否正在播放
pause 暂停
resolveAdjustedSize 调整视频显示大小
seekTo 指定播放位置
setMediaController 设置播放控制器模式(播放进度条)
setOnCompletionListener 当媒体文件播放完时触发事件
setOnErrorListener 错误监听
setVideoPath 设置视频源路径
setVideoURI 设置视频源地址
start 开始播放
下面是一个小例子 首先在布局文件中创建VideoView布局,并且创建几个按钮(Button) 来实现对视频的操作,当我们点击“装载” 按钮时,将指定视频文件的路径,如下代码所示:
Java代码
/*设置路径*/
videoView.setVideoPath("/sdcard/test.mp4");
/*设置模式-播放进度条*/
videoView.setMediaController(new MediaController(Activity01.this));
videoView.requestFocus();
装载之后便可以通过start、pause 方法来播放和暂停,具体代码如下
Activity01
Java代码
package com.yarin.android.Examples_07_03;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.MediaController;
import android.widget.VideoView;
public class Activity01 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/* 创建VideoView对象 */
final VideoView videoView = (VideoView) findViewById(R.id.VideoView01);
/* 操作播放的三个按钮 */
Button PauseButton = (Button) this.findViewById(R.id.PauseButton);
Button LoadButton = (Button) this.findViewById(R.id.LoadButton);
Button PlayButton = (Button) this.findViewById(R.id.PlayButton);
/* 装载按钮事件 */
LoadButton.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
/* 设置路径 */
videoView.setVideoPath("/sdcard/test.mp4");
/* 设置模式-播放进度条 */
videoView.setMediaController(new MediaController(
Activity01.this));
videoView.requestFocus();
}
});
/* 播放按钮事件 */
PlayButton.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
/* 开始播放 */
videoView.start();
}
});
/* 暂停按钮 */
PauseButton.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
/* 暂停 */
videoView.pause();
}
});
}
}
main.xml
Xml代码
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<VideoView
android:id="@+id/VideoView01"
android:layout_width="320px"
android:layout_height="240px"
/>
<Button android:id="@+id/LoadButton"
android:layout_width="80px"
android:layout_height="wrap_content"
android:text="装载"
android:layout_x="30px"
android:layout_y="300px"
/>
<Button android:id="@+id/PlayButton"
android:layout_width="80px"
android:layout_height="wrap_content"
android:text="播放"
android:layout_x="120px"
android:layout_y="300px"
/>
<Button android:id="@+id/PauseButton"
android:layout_width="80px"
android:layout_height="wrap_content"
android:text="暂停"
android:layout_x="210px"
android:layout_y="300px"
/>
</AbsoluteLayout>
由于Android平台由Google自己封装、设计、提供的Java Dalvik 在算法处理效率上无法与C/C++ 或 ARM ASM 相提并论,在描述或移植一些本地语言的解码器上显得无能为力,目前整个平台仅支持MP4 的 H.264、3GP 和 WMV 视频解析。
Android内置的 VideoView类可以快速制作一个系统播放器,VideoView主要用来显示一个视频文件,我们先开看看VideoView类的一些基本方法。
方法 说明
getBufferPercentage 得到缓冲的百分比
getCurrentPosition 得到当前播放的位置
getDuration 得到视频文件的时间
isPlaying 是否正在播放
pause 暂停
resolveAdjustedSize 调整视频显示大小
seekTo 指定播放位置
setMediaController 设置播放控制器模式(播放进度条)
setOnCompletionListener 当媒体文件播放完时触发事件
setOnErrorListener 错误监听
setVideoPath 设置视频源路径
setVideoURI 设置视频源地址
start 开始播放
下面是一个小例子 首先在布局文件中创建VideoView布局,并且创建几个按钮(Button) 来实现对视频的操作,当我们点击“装载” 按钮时,将指定视频文件的路径,如下代码所示:
Java代码
/*设置路径*/
videoView.setVideoPath("/sdcard/test.mp4");
/*设置模式-播放进度条*/
videoView.setMediaController(new MediaController(Activity01.this));
videoView.requestFocus();
装载之后便可以通过start、pause 方法来播放和暂停,具体代码如下
Activity01
Java代码
package com.yarin.android.Examples_07_03;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.MediaController;
import android.widget.VideoView;
public class Activity01 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/* 创建VideoView对象 */
final VideoView videoView = (VideoView) findViewById(R.id.VideoView01);
/* 操作播放的三个按钮 */
Button PauseButton = (Button) this.findViewById(R.id.PauseButton);
Button LoadButton = (Button) this.findViewById(R.id.LoadButton);
Button PlayButton = (Button) this.findViewById(R.id.PlayButton);
/* 装载按钮事件 */
LoadButton.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
/* 设置路径 */
videoView.setVideoPath("/sdcard/test.mp4");
/* 设置模式-播放进度条 */
videoView.setMediaController(new MediaController(
Activity01.this));
videoView.requestFocus();
}
});
/* 播放按钮事件 */
PlayButton.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
/* 开始播放 */
videoView.start();
}
});
/* 暂停按钮 */
PauseButton.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
/* 暂停 */
videoView.pause();
}
});
}
}
main.xml
Xml代码
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<VideoView
android:id="@+id/VideoView01"
android:layout_width="320px"
android:layout_height="240px"
/>
<Button android:id="@+id/LoadButton"
android:layout_width="80px"
android:layout_height="wrap_content"
android:text="装载"
android:layout_x="30px"
android:layout_y="300px"
/>
<Button android:id="@+id/PlayButton"
android:layout_width="80px"
android:layout_height="wrap_content"
android:text="播放"
android:layout_x="120px"
android:layout_y="300px"
/>
<Button android:id="@+id/PauseButton"
android:layout_width="80px"
android:layout_height="wrap_content"
android:text="暂停"
android:layout_x="210px"
android:layout_y="300px"
/>
</AbsoluteLayout>
相关文章推荐
- android笔记--保存和恢复activity的状态数据
- Android系统源代码下载
- 关于Ant编译Android中Ant学习研究
- How to make an Android Spinner with initial text “Select One”
- Android长度单位详解
- 一步一步学android控件(之一) —— 开始篇
- Android 操作系统 获取Root权限 原理解析
- Android 检查更新 下载 安装
- LinearLayout中android:layout_weight的作用
- android 多线程
- Android 将反编译出的APK再回编回去,可以正常运行
- Android 的动作、广播、类别等标识大全
- Android查询:安装出错简要说明
- android的图片操作
- Android实时监控项目第四篇:后台线程发送预览帧视频数据
- android调用jni方法生成的so库函数的过程&发生的异常解决方法(持续更新)
- android动画类
- android 同一个界面同时实现两种动画相对运动
- Android ViewPager使用详解
- android中黑名单的实现