Android工具之判断uri字符串是否网络资源同时设置进度条第二进度,同时监听播放卡顿

来源:互联网 发布:通州淘宝城图片 编辑:程序博客网 时间:2024/05/24 03:23
/** * 判断传入数据是否网络资源 * @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);}

阅读全文
0 0
原创粉丝点击