Android车载开发总结
好久不更新了,今天早上看到去年5月底离开华阳,写的一篇总结报告,很有感触,一起分享;也希望前公司你能够越来越好,能够成为世界性公司。
2014年5月29日 10:40
Author:forrestjr forrestjr@126.com
关于行业的思考:
Android系统免费、免费应用资源多、应用UI/Lunch、操控等人机交交互开发 易定制,因此Android车载在有很大的发挥空间,不怕做不了,只怕你想不到(Android应用产业链养活了数量巨大的移动互联网公司就是一个证明)。
很多时候会有这样一种现象:一提到Android车载机,就会有人说车机没网络,有网络下载要流量;实际上车机wifi连手机热点使用手机流量是很方便的,其次可以通过sdcard卡离线下载安装(可进行网络论坛宣传引导),也可以直接标配3G与移动公司、第三方应用公司合作推广套餐服务(这种模式在手机行业非常流行和成熟、同时也是一个较好的宣传手段);可以说Android车机实际上是一台嵌入在汽车上的手机+传统车载,虽然不尽相同,但手机的营销方法及设计方案都是值得思考和借鉴。
关于开发前选择的思考:
A、硬件:
1)芯片选择(优先级依次降低):
a、芯片规格需要达到车规或工规;
b、芯片音视频接口要丰富;视频方面至少需要支持5路输入(2*cvbs+2*yuv/vga+hdmi)以及4路输出 (1*cvbs+2*lcd+hdmi);音频方面至少需要支持5路输入(2*MicIn+2*LineIN+Pcm/I2S)以及三路输出(2*LineOut+Pcm/I2S);其中,音频方面比较容易满足,而视频输入输出方面需要仔细的分析(例如几路输入是否可以同时存在而不是复用、可以同时在屏幕输出几路、视屏输出是否可以分屏显示以及是否可以重绘UI等);此部分为Android车载芯片与普通手机芯片最大的需求差异;当然还有usb、sdcard接口是否丰富,此需求一般的车载芯片都有丰富的接口;
c、芯片的运行功耗、以及待机功耗,以及方案的电源管理能力(电源管理的稳定性);当真正意义的镜像快速开机难以实现的情况,休眠唤醒不失为快速开机不错的替代方法;
d、方案支持的Android以及Kernel版本,Android至少要4.2.2以上,kernel至少要3.0以上;当然如果需要考虑的前瞻性那么Android可以选择Android4.4(Google网站上介绍:Android 4.4优化了内存占用及触摸屏处理方式,响应速度和准确性超越以往所有版本,系统性能再上巅峰 );
c、原厂的支持与技术能力;
e、相比较手机对性能的要求车载行业对性能应该不高,双核/四核+1G 32Bit DDR即可满足需求,假设定位高端,提高配置也是比较简单的事情;
2)电路设计,尽可能的简化电路,尽可能的利用Android 芯片方案中的核心电路(原厂的出货量巨大,尤其是核心电路已经经过了多放的验证,不太必要在这里别出心裁);尽可能的降低mcu、mpu在软件设计方面的复杂度,这是基于越简单的东西越不容易出错;
B、软件:
1)Android版本的完整性和兼容性
a、基本外设的支持在开始选择方案是就需要去考虑wifi、3G、BT是够有内置或外置可配,以及每个功能的子功能是否支持完善(例如wifi热点、wifi直连等功能),其中蓝牙将会是问题集中爆发的一个功能模块;
b、车载机的蓝牙模块相比较于手机至少需要增加HFP、HID、A2DP、PBAP协议的支持,如果使用Android自带的软协议栈,在开始选择初期就需要做详细的分析以及充分的准备,如果做得不好,这部分就会成为短板;当然选择带协议栈的模块风险相对就会降低,但依然前期需要仔细的评估,否则在开发过程会发现它依然是个短板;
c、sdcard、usb的兼容性分析是前期就需要评估的(如果兼容性不过关可能还需要电子的介入);
d、多媒体的兼容性,以及多媒体的显示效果也非常的重要;
e、mpu端混音输出和单声音输出,结合mcu声音通道,是否能够满足要求,也是项目前期评估重要的一环;
f、方案Android CTS认证能够达到多少百分百,这关系的Android系统对三方软件的兼容性;
2)扩展功能的支持:mirrorcast接收端支持、双屏显示、双屏异显、后台视频异步输出、后台UI绘制等可用于车载的功能,在开发之前同样需要调研和评估;
关于开发过程的思考:
开发过程就是将开发之前评估和设计好的模块功能实现与细化的过程;
这部分靠的是每个人的认真对待、有效沟通,每实现一个功能需反复的验证和测试(软件和硬件),并且在开发过程中做好开发记录:
a、代码注释、编程规范;
b、细化功能的反复验证,以及验证报告;
c、svn代码提交记录,以及项目负责人的审核;
d、开发记录、问题解决记录、沟通纪要;
在开发过程中靠的是开发人员的认真、细心、沟通及耐心,加之相对合理的开发时间和激励措施;
此开发过程重在执行;
关于开发后期与测试的思考:
开发后期,个人认为每个开发人员起码需要投入一半时间在测试和反复验证与自己开发相关的功能模块上;我们做的是产品,而不单是实现功能;
同时测试人员在此阶段也需要进行高强的的整机测试和自动化测试;
此阶段的任务是查出潜在问题、完善稳定功能、优化性能;
此阶段会让人觉得很枯燥、或是烦躁,但他确实产品化关键的环节;
个人认为此阶段没有捷径,只能靠辛勤、汗水和时间来保证产品的质量;
如果开发过程控制好,每个功能都进行过反复的验证,开发都有详细的记录,那么开发后期和测试阶段相对就会轻松些;
此开发过程重在勤劳;
关于开发分析与设计的思考:
开发分析应包括开发前期的方案选择和评估;
开发前期的方案选择和评估也应该属于开发的过程,尤其在嵌入式行业(很难有一个项目负责人能懂得从上至下的所有技术),应有开发技术人员的全程参与;
开发分析不能在开发中期或是后期再来补,没有多少的效果和意义;
开发分析应该包含产品化的部分,最好能通过产品经理持续改进和跟踪;
在开发分析完善的情况下,好的设计才是一个产品的竞争力和附加值;
好的设计应当是在有稳定平台的基础上,能够设计出 具有创新、改善用户需求的功能、设计出精致、舒适的人机交互界面;
产品的稳定、流畅、兼容是基础,而设计上的新颖、贴切、舒适才是产品的生命力;