从今年三月份开始从事Android 机顶盒上的app开发。app中有直播、点播功能需要用到播放器,提供ijkplayer和系统播放器供用户选择。系统播放器使用修改过的VideoView播放视频。项目当前sdk版本是28,所以直接把28版本的VideoView源码拷贝到项目中进行修改。结果app运行在5.0以下机顶盒上的时候,进入直播或者点播播放界面就闪退了。报错日志大概是这样的:android.view.InflateException: Binary XML file line #17: Cannot inflate class com.xxx.xxx.MyVideoView,根据提示找到对应的布局文件,仔细查看控件名称和使用都是正确的,经过查找系统各个版本源码后发现:VideoView.java中用到了两个类:MediaFormat.java和AudioAttributes.java 在5.0及以上版本有,4.x版本没有这两个类文件。源码路径为:/frameworks/base/media/java/android/media/ , 找到原因就好解决了,在自定义的MyVideoView类中删除掉这两个低版本没有的类即可。
网友评论