安卓VideoView(二)

此篇文章主要是对上篇文章地址的优化补充。

一.控制器位置

在给videoView设置控制机MediaController的时候他的位置显示在最底下,导致你每次触碰视频进度条快进快退都出现挡住了导航栏影响用户操作。

解决方法:只需设置mediaController.setPadding(intleft,inttop,intright,intbottom)就可以了。left靠父控件左边的像素距离,top靠上,right靠右,bottom靠下。像我为了给导航栏腾出空间,我就设置成mediaController.setPadding(0,0,0,222)。离底部222像素点当然由于每台设备的像素不一样你也可以通过getResources().getDisplayMetrics().heightPixels得到整个屏幕高再乘以个比例系数。比如:1/10距离底部占整个屏幕的1/10。

二.设置错误监听videoView.setOnErrorListener(errorListener)

我们都知道当URL地址不存在或解析的文件格式不对,视频是无法播放的。为了让用户知道原因我们就需要设置错误监听。

MediaPlayer.OnErrorListener a=new MediaPlayer.OnErrorListener() {
    @Override
    public boolean onError(MediaPlayer mp, int what, int extra) {
        return false;
    }
};

系统如果识别不了视频会自动出现个弹框“此视频无法播放”,界面真他娘的丑。解决办法把上面的return false改成ture。这个时候你就可以添加你自定义的弹框。

错误码解析对照

switch (what){  
        case MediaPlayer.MEDIA_ERROR_UNKNOWN:  1
            Log.e("text","发生未知错误");   
            break;  
        case MediaPlayer.MEDIA_ERROR_SERVER_DIED: 100 
            Log.e("text","媒体服务器死机");   
    }  
    switch (extra){  
        case MediaPlayer.MEDIA_ERROR_IO:  -1004
            //io读写错误  
            Log.e("text","文件或网络相关的IO操作错误");  
            break;  
        case MediaPlayer.MEDIA_ERROR_MALFORMED:  -1007
            //文件格式不支持  
            Log.e("text","比特流编码标准或文件不符合相关规范");  
            break;  
        case MediaPlayer.MEDIA_ERROR_TIMED_OUT: -110 
            //一些操作需要太长时间来完成,通常超过3 - 5秒。  
            Log.e("text","操作超时");  
            break;  
        case MediaPlayer.MEDIA_ERROR_UNSUPPORTED:  -1010
            //比特流编码标准或文件符合相关规范,但媒体框架不支持该功能  
            Log.e("text","比特流编码标准或文件符合相关规范,但媒体框架不支持该功能");  
     











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值