Android Multimedia技术实现分析 --- 开局篇
lxzhg 2010-09-19 06:39:16 http://blog.csdn.net/lxzhg/archive/2010/09/19/5895244.aspx
已在Android项目上摸爬滚打一年多,带着对庞大代码的恐惧,慢慢深入其中,终在multimedia实现上有所领悟,窥得一二,为防日久生忘,分篇逐一总结。
鉴于Android架构已为人所众知,这里不再赘述,所涉及的模块也不足其一二。multimedia相关的技术无非几大块,第一当然是UI系统,其他有media player和recorder,Android已提供了Java层的API和相关例子实现。且不论Java开发者用起来是否满意,但GUI及Gallery/3D的实现已让人体会到其强大可靠。
支撑Java应用的中间模块混杂在一起,被称之为framework,主要由C/C++实现,这是整个Android最博大精深之处,犹如四通八达的高速公路网络,向上用JNI连接Java应用,向下连接着内核驱动,横跨UI, Media, Database, Wifi等众多模块。若无明确的路线图,以及巨大的定力,初涉其中犹走迷宫,往往徘徊其间不得返。
走出Framework的迷宫,再放眼望去,就是眼花缭乱的组件世界,此处仅仅讨论multimedia,谈及Android的架构系统,最庞大之处莫过于Media和UI。对应的模块主要有Opencore,GLES,Skia以及万能的Surface系统等,后面将分若干篇幅逐一介绍。
如果侥幸走出framework,仍尚有余力,不妨去研究些更巨挑战性的东西,与multimedia相关的,譬如音频视编解码,2D/3D图像处理,如果仍觉得不过瘾,还有VPU和GPU硬件加速等着你,足以让你乐而忘返。
再假如仍不能止步于multimedia带来的魅力,那就需要做好心理准备,这里不过是冰山一角,往大处看还有dalvik虚拟机,linux内核及不计其数的driver,足够花一百年的时间去体会。
我认为我已没有这个机会:)