我正在构建自己的视频显示视图,我希望将自定义视图基于内置的Android VideoView。我正在寻找VideoView的源代码。我在Stackoverflow和其他地方找到的大多数帖子都指向grepcode。不幸的是,grepcode上的代码似乎不是developer.android.com中记录的代码,并且不是很有用。 例如,grepcode上的VideoView.java引用了一个mContext对象,该对象继承自View,但在developer.android.com sdk的视图中不可用。此外,VideoView调用MediaPlayer的resume方法,该方法在标准MediaPlayer类中也不可用。 我在哪里可以获得developer.android.com上记录的来源?
谢谢, 万斯
答案 0 :(得分:1)
首先,Android基础框架是开源的,grepcode的源代码与github的原始源代码没有区别。它们都有优点和缺点,grepcode中的源代码由API级别标记,因此很容易导航特定版本的API类,其中github中的源代码具有每次提交的完整更改历史记录,但查找/检索早期版本有点复杂具体的API类。
grepcode上的VideoView.java引用了一个继承自View的mContext对象,但在developer.android.com sdk的视图中不可用
mContext在android.view.View中标记为@hide
,请参阅head version in github。
VideoView调用MediaPlayer的简历方法,该方法在标准MediaPlayer类中也不可用。
resume()在android.media.MediaPlayer中标记为@hide
,请参阅earlier version in github或tag 2.2_r1.1 in grepcode。
一般来说,谷歌为消费者开发者提供的开发API(android.jar)已经剥离了com.android.internal
和@hide
API。但是,安装在实际设备上的运行时API(framework.jar)具有所有功能。
如果您想在自己的代码中使用这些内部和隐藏API,解决方案是使用java反射或在他的博客here中解释的解决方法inazaruk。
希望这是有道理的。