/** * 判断传入数据是否网络资源 * @param uri * @return 是网络资源返回true(其中rtsp是网络直播),不是返回false */ public boolean isNetUri(String uri){ boolean result = true; if(uri!=null){ if(uri.toLowerCase().startsWith("http")||uri.toLowerCase().startsWith("rtsp")||uri.toLowerCase().startsWith("mms")){ result = true; } } return result;}
/**在handler里面每秒更新第二进度条背景*/
if(isNetUri){//网络资源 int buffer = videoview.getBufferPercentage(); int secondProgress=buffer*seekbarVideo.getMax()/100; seekbarVideo.setSecondaryProgress(secondProgress); }else{//本地视频 seekbarVideo.setSecondaryProgress(0); }if(isSystemMethod){//使用系统方法监听卡顿 //设置视频播放卡顿的监听,一般是网速较慢时 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { videoview.setOnInfoListener(new MyOnInfoListener()); } }/**使用自定义方法监听卡顿class MyOnInfoListener implements MediaPlayer.OnInfoListener { @Override public boolean onInfo(MediaPlayer mp, int what, int extra) { switch(what){ case MediaPlayer.MEDIA_INFO_BUFFERING_START: ll_buffer.setVisibility(View.VISIBLE); break; case MediaPlayer.MEDIA_INFO_BUFFERING_END: ll_buffer.setVisibility(View.GONE); break; } return false; } }自定义监听卡顿,如果能得到进度的,建议用自定义卡顿,会更准确;如果是直播,不能得到进度,只能用系统方法。
*/
if(!isSystemMethod && videoview.isPlaying()){ int dis = current-prePosition; if(dis<500){//卡顿 ll_buffer.setVisibility(View.VISIBLE); }else{//不卡 ll_buffer.setVisibility(View.GONE); } prePosition=current; }else{//播放暂停状态 ll_buffer.setVisibility(View.GONE); }
Android工具之判断uri字符串是否网络资源同时设置进度条第二进度,同时监听播放卡顿
最新推荐文章于 2022-11-16 11:52:51 发布