android  videoview&nbs…

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
import java.util.Timer;
import java.util.TimerTask;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.LinearLayout;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ToggleButton;
import android.widget.VideoView;

import com.Hisense.consant.Constant;

public class KzVideoActivity extends Activity {
      TextView kzvideo_tv;
      VideoView videoView;
      boolean isButtonShow = false;
      boolean flag = true;
      LinearLayout shade;
      Button kzvideo_back_btn, kzvideo_forward_btn,small_btn_kz;
      ToggleButton kzvideo_pause_btn;
      SeekBar kzvideo_sb;
      int currentpostion = 0, seekbarpostion = 0,smallsbpostion=-1;
      TextView autoCurrentpostion, autoDuration;
      Timer time = new Timer();
      int currentVideoID=0;
      LayoutInflater inflater;
      int whichavtivity;
      // MyMediaController mmc;
      int smallIndex,smallPostion;
      String smallPath;
      Handler hanlder_btn = new Handler() {

            @Override
            public void handleMessage(Message msg) {
                  // TODO Auto-generated method stub
                  if (msg.what == 1) {
                        switch (msg.arg1) {
                        case 0:
                              if (flag) {
                                    small_btn_kz.setVisibility(View.GONE);
                                    shade.setVisibility(View.GONE);
                                    isButtonShow = false;
                              }
                              break;
                        default:
                              break;
                        }
                  }
            }
      };

      @SuppressLint("HandlerLeak")
      Handler handlertime = new Handler() {

            @Override
            public void handleMessage(Message msg) {
                  // TODO Auto-generated method stub
                  if (msg.what == 1) {
                        Log.d("mytest","shodao"+msg.arg1);
                        kzvideo_sb.setProgress(msg.arg1);
                        Date date = new Date(msg.arg1 * 1000);
                        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
                        sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
                        autoCurrentpostion.setText(getSpecialTime(msg.arg1));
                  }
            }
      };
      Runnable runnable = new Runnable() {

            @Override
            public void run() {
                  // TODO Auto-generated method stub
                  if(smallsbpostion!=-1){
                        seekbarpostion=smallsbpostion;
                        smallsbpostion=-1;
                  }
                  seekbarpostion++;
                  handlertime.obtainMessage(1, seekbarpostion, -1).sendToTarget();
                  handlertime.postDelayed(runnable, 1000);
            }
      };

      @Override
      protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            // 全屏
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
            setContentView(R.layout.activity_video);
            // mmc=(MyMediaController) findViewById(R.id.myMediaController1);
            // 初始化控件
            init();
            // 接收视频文件路径
            String videoPath = getIntent().getExtras().getString("videoPath");
            currentVideoID=getIntent().getIntExtra("videoID", -1);
            int duration = getIntent().getIntExtra("videoDuration", -1);
            whichavtivity=getIntent().getIntExtra("whichactivity",-1);
            if(whichavtivity==Constant.KZ){
                  smallPostion=getIntent().getIntExtra("postion", -1);
                  smallIndex=getIntent().getIntExtra("index", -1);
                  smallPath=getIntent().getStringExtra("path");     
                  currentVideoID=smallIndex;
                  videoReStart(smallPostion, smallIndex);
            }else{
                  videoStart(videoPath, duration);
            }
            // 视频播放
            videoView.setOnCompletionListener(new OnCompletionListener() {
                 
                  @Override
                  public void onCompletion(MediaPlayer mp) {
                        // TODO Auto-generated method stub
                        handlertime.removeCallbacks(runnable);
                  }
            });
            //

            //小窗口播放
            small_btn_kz.setOnClickListener(new OnClickListener() {

                  @Override
                  public void onClick(View v) {
                        // TODO Auto-generated method stub
                        Intent in=new Intent(KzVideoActivity.this,SmallPlay.class);
                        in.putExtra("path",MainActivity.mVideoList.get(currentVideoID).getPath());
                        in.putExtra("postion",videoView.getCurrentPosition());
                        in.putExtra("index",currentVideoID);
                        in.putExtra("whichactivity",Constant.KZ);
                        startActivity(in);     
                        finish();

                  }
            });
            kzvideo_tv.setOnClickListener(new OnClickListener() {

                  @Override
                  public void onClick(View v) {
                        // TODO Auto-generated method stub
                        if (!isButtonShow) {
                              shade.setVisibility(View.VISIBLE);
                              small_btn_kz.setVisibility(View.VISIBLE);
                              isButtonShow = true;
                              time.schedule(new TimerTask() {
                                    @Override
                                    public void run() {
                                          // TODO Auto-generated method stub
                                          if (flag) {
                                                hanlder_btn.obtainMessage(1, 0, -1).sendToTarget();
                                          } else {
                                                flag = true;
                                          }
                                    }
                              }, 4000);
                        } else {
                              flag = false;
                              small_btn_kz.setVisibility(View.GONE);
                              shade.setVisibility(View.GONE);
                              isButtonShow = false;
                        }
                  }
            });

            kzvideo_pause_btn.setOnCheckedChangeListen er(new OnCheckedChangeListener() {

                  @Override
                  public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                        // TODO Auto-generated method stub
                        if (isChecked) {
                              videoView.pause();
                              // currentpostion=videoView.getCurrentPosition()/1000;
                              handlertime.removeCallbacks(runnable);
                        } else {
                              videoView.seekTo(videoView.getCurrentPosition());
                              videoView.start();     
                              seekbarpostion = videoView.getCurrentPosition() / 1000;
                              handlertime.post(runnable);
                        }
                  }
            });

            kzvideo_back_btn.setOnClickListener(new OnClickListener() {

                  @Override
                  public void onClick(View v) {
                        // TODO Auto-generated method stub
                       
                        if(currentVideoID==0){
                              Toast.makeText(getApplicationContext(), "这已经是第一个视频",5000).show();
                        }else{
                              currentVideoID--;
                              handlertime.removeCallbacks(runnable);
                              videoView.setVideoPath(MainActivity.mVideoList.get(currentVideoID).getPath());
                              seekbarpostion=0;
                              videoView.start();
                              handlertime.post(runnable);
                        }

                  }
            });

            kzvideo_forward_btn.setOnClickListener(new OnClickListener() {

                  @Override
                  public void onClick(View v) {

                        if(currentVideoID==MainActivity.mVideoList.size()-1){
                              Toast.makeText(getApplicationContext(), "这已经是最后一个是视频",5000).show();
                        }else{
                              currentVideoID++;
                              handlertime.removeCallbacks(runnable);
                              videoView.setVideoPath(MainActivity.mVideoList.get(currentVideoID).getPath());
                              seekbarpostion=0;
                              videoView.start();
                              handlertime.post(runnable);
                           
                  }
            });
            kzvideo_sb.setOnSeekBarChangeListen er(new OnSeekBarChangeListener() {

                  @Override
                  public void onStopTrackingTouch(SeekBar seekBar) {
                        // TODO Auto-generated method stub
                        seekbarpostion = seekBar.getProgress();
                        Date date = new Date(seekbarpostion * 1000);
                        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
                        sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
                        autoCurrentpostion.setText(getSpecialTime(seekbarpostion));
                        currentpostion = seekbarpostion;
                        videoView.seekTo(seekbarpostion * 1000);

                        handlertime.removeCallbacks(runnable);
                        if (videoView.isPlaying()) {
                              handlertime.post(runnable);
                        }


                  }

                  @Override
                  public void onStartTrackingTouch(SeekBar seekBar) {
                        // TODO Auto-generated method stub
                  }

                  @Override
                  public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                        // TODO Auto-generated method stub
                  }
            });

      }

      private void init() {
            videoView = (VideoView) findViewById(R.id.KzVideo);
            kzvideo_tv = (TextView) findViewById(R.id.kzvideo_tv);
            kzvideo_back_btn = (Button) findViewById(R.id.kz_back_bt);
            kzvideo_pause_btn = (ToggleButton) findViewById(R.id.kz_pause_bt);
            kzvideo_forward_btn = (Button) findViewById(R.id.kz_forward_bt);
            kzvideo_sb = (SeekBar) findViewById(R.id.kz_seekBar1);
            autoCurrentpostion = (TextView) findViewById(R.id.autocurrentpostion);
            autoDuration = (TextView) findViewById(R.id.autoduration);
            shade = (LinearLayout) findViewById(R.id.shade);
            small_btn_kz=(Button)findViewById(R.id.small_btn_kz);
      }

      @SuppressLint("SimpleDateFormat")
      private void videoStart(String videoPath, int duration) {
            videoView.setVideoPath(videoPath);
            videoView.start();
            kzvideo_sb.setMax(duration);
            Date date = new Date(duration * 1000 );
            SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
            sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
            autoDuration.setText(getSpecialTime(duration));
            handlertime.post(runnable);
            seekbarpostion = currentpostion;

      }
      @SuppressLint("SimpleDateFormat")
      private void videoReStart(int postion,int index) {
            int duration=Integer.parseInt(MainActivity.mVideoList.get(index).getDuration());     
            videoView.setVideoPath(MainActivity.mVideoList.get(index).getPath());
            kzvideo_sb.setMax(duration/1000);
            videoView.seekTo(postion);
            videoView.start();     
            Date date = new Date(duration * 1000 );
            SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
      //      sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
            autoDuration.setText(getSpecialTime(duration));
            handlertime.post(runnable);
            smallsbpostion = postion/1000;

      }
      public String getSpecialTime(int miao) {
            String strTime = "";
            int minute=miao/60/60;
            if (miao % 60 > 9) {
                  strTime = minute+":"+miao / 60 + ":" + miao % 60;
            } else {
                  strTime = minute+":"+miao / 60 + ":0" + miao % 60;
            }
           
            return strTime;
      }
      @Override
      protected void onResume() {
            // TODO Auto-generated method stub

            super.onResume();
      }

      @Override
      protected void onDestroy() {
            // TODO Auto-generated method stub
            super.onDestroy();
            handlertime.removeCallbacks(runnable);
      }

      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.kzvideo, menu);
            return true;
      }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值