VideoView播放本地、网络视频及其监听


重写过的VideoView,可以设置宽高和播放、暂停监听

public class MyVideoView extends VideoView {
	  private int mVideoWidth;
	  private int mVideoHeight;
	  private PlayPauseListener mListener;

	  public MyVideoView(Context context) {
	    super(context);
	  }
	 
	  public MyVideoView(Context context, AttributeSet attrs) {
	    super(context, attrs);
	  }
	 
	  public MyVideoView(Context context, AttributeSet attrs, int defStyle) {
	    super(context, attrs, defStyle);
	  }
	 
	  
	  public void setPlayPauseListener(PlayPauseListener listener) {
	        mListener = listener;
	    }

	    @Override
	    public void pause() {
	        super.pause();
	        if (mListener != null) {
	            mListener.onPause();
	        }
	    }

	    @Override
	    public void start() {
	        super.start();
	        if (mListener != null) {
	            mListener.onPlay();
	        }
	    }

	    interface PlayPauseListener {
	        void onPlay();
	        void onPause();
	    }
	  
	  
	  @Override
	  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
	    /* The following code is to make videoView view length-width 
	    based on the parameters you set to decide. */
	    int width = getDefaultSize(mVideoWidth, widthMeasureSpec);
	    int height = getDefaultSize(mVideoHeight, heightMeasureSpec);
	    setMeasuredDimension(width, height);
	  }
	}



String VideoPath="/mnt/sdcard" + File.separator + "ReaderDemo/video"
				+"/美队冬兵.MP4";
Uri uri = Uri.parse("http://iuuyuapimg/ban.mp4");
video = (VideoView) findViewById(R.id.video);
MediaController mc = new MediaController(this);  
 mc.setVisibility(View.INVISIBLE);  //隐藏VideoView自带的进度条
video.setMediaController(mc);
//video.setVideoPath(VideoPath);//播放本地视频
video.setVideoURI(uri);//播放网络视频
video.requestFocus();
video.start();//自动开始播放


video.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
			@Override
			public void onCompletion(MediaPlayer mp) {
				// 播放结束后的动作
				
			}
		});

		((MyVideoView) video)
				.setPlayPauseListener(new MyVideoView.PlayPauseListener() {

					public void onPlay() {<span style="font-family: Arial, Helvetica, sans-serif;">//开始播放监听</span>
					}
					
					public void onPause() {
						// 暂停播放监听
					}
				});
		
		video.setOnErrorListener(new OnErrorListener() {
			//视频无法播放,执行的操作
			
				return true;
			}
		});


video.setOnErrorListener(new OnErrorListener() {
			//视频无法播放监听
			public boolean onError(MediaPlayer mp, int what, int extra) {
				// TODO Auto-generated method stub
				finish();
				return true;
			}
		});
		
		
		//缓冲监听
		video.setOnInfoListener(new OnInfoListener() {
		    public boolean onInfo(MediaPlayer mp, int what, int extra) {
		        if(what == MediaPlayer.MEDIA_INFO_BUFFERING_START){
		        	Toast.makeText(VideoActivity.this, "正在缓冲", Toast.LENGTH_LONG).show();
		        }else if(what == MediaPlayer.MEDIA_INFO_BUFFERING_END){
		            //此接口每次回调完START就回调END,若不加上判断就会出现缓冲图标一闪一闪的卡顿现象
		            if(mp.isPlaying()){
		            	Toast.makeText(VideoActivity.this, "缓冲结束", Toast.LENGTH_LONG).show();
		            	video.setVisibility(View.VISIBLE);
		            }
		        }
		        return true;
		    }
		});

videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {  
            @Override  //加载网络资源黑屏结束监听
            public void onPrepared(MediaPlayer mediaPlayer) {  
                //Called when the video is ready to play  
                
            }  
        });  




  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值