package com.afollestad.materialcamera.internal;
import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.VideoView;
import com.afollestad.materialcamera.R;
/**
* Created by lzf on 2016/9/2.
* http://ocgig6vo9.bkt.clouddn.com/Wildlife.wmv
*/
public class PlayActivity extends Activity {
private VideoView videoView;//视频
protected String videoUrl="";
private RelativeLayout controller,relativeLayout;//控制面板 动画载体
private SeekBar seekBar;//控制面板 进度条
// private boolean flag=true;
private TextView current,total;//当前时间 总时间
private long lastPosition=0;//
// private AnimationDrawable animationDrawable;//动画
private Thread thread;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.qiniu_activity_play);
this.initVideoPlay();
}
private void initVideoPlay() {
if (getIntent() != null && getIntent().getStringExtra("videoUrl") != null && !getIntent().getStringExtra("videoUrl").equals("")) {
videoUrl = getIntent().getStringExtra("videoUrl");
}
videoView = (VideoView) findViewById(R.id.videoView);
// //动画
// ImageView imageView = (ImageView) findViewById(R.id.image);
//返回
controller= (RelativeLayout) findViewById(R.id.controller);
seekBar= (SeekBar) findViewById(R.id.seekBar);
current= (TextView) findViewById(R.id.current);
total= (TextView) findViewById(R.id.total);
// animationDrawable= (AnimationDrawable) imageView.getDrawable();
if (videoUrl!=null&&!videoUrl.equals("")) {
videoView.setVideoURI(Uri.parse(videoUrl));
videoView.start();
// if (animationDrawable!=null&&!animationDrawable.isRunning()) {
// animationDrawable.start();
// }
}else {
Toast.makeText(PlayActivity.this,"视频地址错误", Toast.LENGTH_SHORT).show();
}
thread=new Thread(new Runnable() {
@Override
public void run() {
try {
while (true){
if (videoView!=null&&seekBar!=null) {
if (videoView.isPlaying()) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (videoView.getCurrentPosition() != 0 && videoView.getCurrentPosition() != lastPosition) {
Log.e("lzf_thread", "CurrentPosition " + videoView.getCurrentPosition() + "");
seekBar.setProgress(videoView.getCurrentPosition());
lastPosition = videoView.getCurrentPosition();
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
Log.e("lzf_onPrepared","Duration "+videoView.getDuration()+"");
// //准备完毕隐藏动画
// relativeLayout.setVisibility(View.GONE);
// if (animationDrawable != null && animationDrawable.isRunning()) {
// animationDrawable.stop();
// }
Log.e("lzf_onPrepared",videoView.getWidth()+" "+videoView.getHeight()+" "+videoView.getRotation());
//设置seekBar和总时间
if (videoView.getDuration()!=0){
seekBar.setMax(videoView.getDuration());
total.setText(setTime(videoView.getDuration()/1000));
}
thread.start();
}
});
videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// flag=false;
Log.e("lzf_Completion","播放完成");
seekBar.setProgress(videoView.getDuration());
Log.e("lzf_Completion",videoView.getWidth()+" "+videoView.getHeight()+" "+videoView.getRotation());
}
});
//根据seekBar的进度 更新当前时间
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (current!=null) {
current.setText(setTime(progress/1000));
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// videoView.pause();
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
if (videoView!=null) {
videoView.seekTo(seekBar.getProgress());
videoView.start();
}
}
});
}
public void restart(View view) {
//播放过 才可以重新开始
Log.e("lzf_video","重新开始");
if (videoView!=null&&videoView.getCurrentPosition()>0){
videoView.seekTo(0);
// flag=true;
videoView.start();
}
}
public void start(View view) {
Log.e("lzf_video","开始");
//只有不是播放状态才可以start
if (videoView!=null&&!videoView.isPlaying()){
videoView.start();
}
}
public void pause(View view) throws InterruptedException {
//正在播放 暂停
Log.e("lzf_video","暂停");
if (videoView!=null&&videoView.isPlaying()){
videoView.pause();
}
}
public String setTime(long time){
if (time<60){
if (time<10){
return "00:00:0"+time;
}else {
return "00:00:"+time;
}
}else if (time<3600){
if (time<600){
if (time%60<10){
return "00:0"+time/60+":0"+time%60;
}else {
return "00:0"+time/60+":"+time%60;
}
}else {
if (time%60<10){
return "00:"+time/60+":0"+time%60;
}else {
return "00:"+time/60+":"+time%60;
}
}
}else {
//小于10小时
if (time<36000){
//0+time/3600: 时
if (time%3600<600){
if (time%60<10){
return "0"+time/3600+":0"+time/60+":0"+time%60;
}else {
return "0"+time/3600+":0"+time/60+":"+time%60;
}
}else {
if (time%60<10){
return "0"+time/3600+":"+time/60+":0"+time%60;
}else {
return "0"+time/3600+":"+time/60+":"+time%60;
}
}
}else {
if (time%3600<600){
if (time%60<10){
return time/3600+":0"+time/60+":0"+time%60;
}else {
return time/3600+":0"+time/60+":"+time%60;
}
}else {
if (time%60<10){
return time/3600+":"+time/60+":0"+time%60;
}else {
return time/3600+":"+time/60+":"+time%60;
}
}
}
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode== KeyEvent.KEYCODE_BACK){
if (thread!=null&&thread.isAlive()){
thread.interrupt();
}
}
return super.onKeyDown(keyCode, event);
}
}