安卓VideoView使用
2015-11-26 12:28
351 查看
1.简单的使用
String url = "http://download1.vlook.cn/ef82583f7a4e6467b408db72fd521d8d/56566f43/video/vga/cJME.mp4";
mViewView.setVideoURI(Uri.parse(url));
mViewView.setMediaController(new MediaController(this));
mViewView.start();
2.自定义进度
package qianfeng.day07_videoview;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.DragEvent;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.VideoView;
import java.text.SimpleDateFormat;
/**
* Created by keven on 15/11/26.
*/
public class MainActivity2 extends AppCompatActivity{
private static final String TAG = "MainActivity2";
private static final int SPACE = 10;
private SeekBar mSeek;
private VideoView mVideo;
private LinearLayout mOperation;
private TextView mTimeTv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
mSeek = (SeekBar) findViewById(R.id.progress);
mVideo = (VideoView) findViewById(R.id.video);
mOperation = (LinearLayout) findViewById(R.id.operation);
mTimeTv = (TextView) findViewById(R.id.time_tv);
//设置所有的监听
setAllClick();
String url = "http://service.vlook.cn:8080/down/servlet/VideoPlay?vid=cHuV&client=pc&imei=c93af537e63f42932e0b41b24ed6fe31&n=xx.mp4";
mVideo.setVideoURI(Uri.parse(url));
mVideo.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
Log.i(TAG,"当前视频已准备就绪");
handler.post(runnable);
mVideo.start(); //播放视频
}
});
}
Handler handler = new Handler();
boolean isTouch = false;
Runnable runnable = new Runnable() {
@Override
public void run() {
//获取总长
int duration = mVideo.getDuration();
//获取当前位置
int currentPosition = mVideo.getCurrentPosition();
//设置一个时间显示
mTimeTv.setText(formatTtime(currentPosition) + " / " + formatTtime(duration));
//获取缓冲百分比
int bufferPercentage = mVideo.getBufferPercentage();
//设置最大长度
mSeek.setMax(duration);
//设置缓冲多少
if(bufferPercentage==100){
mSeek.setSecondaryProgress(duration);
}else{
mSeek.setSecondaryProgress((duration/100*bufferPercentage));
}
if(!isTouch){
//设置当前位置
mSeek.setProgress(currentPosition);
}
//递归
handler.postDelayed(runnable,1000);
}
};
String formatTtime(long time){
SimpleDateFormat sdf = new SimpleDateFormat("mm:ss");
String timeStr = sdf.format(time);
return timeStr;
}
private void setAllClick() {
mOperation.getChildAt(0).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
play();
}
});
mOperation.getChildAt(1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pause();
}
});
mOperation.getChildAt(2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
forward();
}
});
mOperation.getChildAt(3).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
backward();
}
});
mSeek.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
9ccd
{
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
isTouch = true;
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
isTouch = false;
mVideo.seekTo(seekBar.getProgress());
}
});
}
private void backward() {
//获取视频总长
//获取当前播放的位置 ,并且追加 前进的时间
int currentPosition = mVideo.getCurrentPosition()-SPACE;
if(currentPosition<0){
mVideo.seekTo(0);
}else{
mVideo.seekTo(currentPosition);
}
}
private void forward() {
//获取视频总长
int duration = mVideo.getDuration();
//获取当前播放的位置 ,并且追加 前进的时间
int currentPosition = mVideo.getCurrentPosition()+SPACE;
if(currentPosition<duration){
mVideo.seekTo(currentPosition);
}else{
mVideo.seekTo(duration);
}
}
private void pause() {
mVideo.pause();
}
private void play() {
mVideo.start();
}
}
String url = "http://download1.vlook.cn/ef82583f7a4e6467b408db72fd521d8d/56566f43/video/vga/cJME.mp4";
mViewView.setVideoURI(Uri.parse(url));
mViewView.setMediaController(new MediaController(this));
mViewView.start();
2.自定义进度
package qianfeng.day07_videoview;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.DragEvent;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.VideoView;
import java.text.SimpleDateFormat;
/**
* Created by keven on 15/11/26.
*/
public class MainActivity2 extends AppCompatActivity{
private static final String TAG = "MainActivity2";
private static final int SPACE = 10;
private SeekBar mSeek;
private VideoView mVideo;
private LinearLayout mOperation;
private TextView mTimeTv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
mSeek = (SeekBar) findViewById(R.id.progress);
mVideo = (VideoView) findViewById(R.id.video);
mOperation = (LinearLayout) findViewById(R.id.operation);
mTimeTv = (TextView) findViewById(R.id.time_tv);
//设置所有的监听
setAllClick();
String url = "http://service.vlook.cn:8080/down/servlet/VideoPlay?vid=cHuV&client=pc&imei=c93af537e63f42932e0b41b24ed6fe31&n=xx.mp4";
mVideo.setVideoURI(Uri.parse(url));
mVideo.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
Log.i(TAG,"当前视频已准备就绪");
handler.post(runnable);
mVideo.start(); //播放视频
}
});
}
Handler handler = new Handler();
boolean isTouch = false;
Runnable runnable = new Runnable() {
@Override
public void run() {
//获取总长
int duration = mVideo.getDuration();
//获取当前位置
int currentPosition = mVideo.getCurrentPosition();
//设置一个时间显示
mTimeTv.setText(formatTtime(currentPosition) + " / " + formatTtime(duration));
//获取缓冲百分比
int bufferPercentage = mVideo.getBufferPercentage();
//设置最大长度
mSeek.setMax(duration);
//设置缓冲多少
if(bufferPercentage==100){
mSeek.setSecondaryProgress(duration);
}else{
mSeek.setSecondaryProgress((duration/100*bufferPercentage));
}
if(!isTouch){
//设置当前位置
mSeek.setProgress(currentPosition);
}
//递归
handler.postDelayed(runnable,1000);
}
};
String formatTtime(long time){
SimpleDateFormat sdf = new SimpleDateFormat("mm:ss");
String timeStr = sdf.format(time);
return timeStr;
}
private void setAllClick() {
mOperation.getChildAt(0).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
play();
}
});
mOperation.getChildAt(1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pause();
}
});
mOperation.getChildAt(2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
forward();
}
});
mOperation.getChildAt(3).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
backward();
}
});
mSeek.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
9ccd
{
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
isTouch = true;
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
isTouch = false;
mVideo.seekTo(seekBar.getProgress());
}
});
}
private void backward() {
//获取视频总长
//获取当前播放的位置 ,并且追加 前进的时间
int currentPosition = mVideo.getCurrentPosition()-SPACE;
if(currentPosition<0){
mVideo.seekTo(0);
}else{
mVideo.seekTo(currentPosition);
}
}
private void forward() {
//获取视频总长
int duration = mVideo.getDuration();
//获取当前播放的位置 ,并且追加 前进的时间
int currentPosition = mVideo.getCurrentPosition()+SPACE;
if(currentPosition<duration){
mVideo.seekTo(currentPosition);
}else{
mVideo.seekTo(duration);
}
}
private void pause() {
mVideo.pause();
}
private void play() {
mVideo.start();
}
}
相关文章推荐
- swift中的自动引用计数以及出现的问题
- java从文本文件中一次读入一行数据进行处理
- ClassName::class
- Android NDK中使用socket
- UFT/QTP的工作原理
- Linux 下Flume1.4.0的安装
- php-输出一个表格
- SSH:EL表达式讲解
- viewpagerindicator+UnderlinePageIndicator+ viewpage切换
- yuv转rgb
- 内部命令vs外部命令
- Html+Css+base标签是什么及其作用介绍
- [leetcode] Best Time to Buy and Sell Stock II
- 语义模型
- jQuery实现图片轮播效果(仿QQ商城首页、天猫首页)
- YUV与RGB格式转换
- 如何设置 zend studio 默认编码为UTF8
- 在创业公司的那些日子(一)
- Java中数组声明和初始化
- sublime2使用和配置