Android车载开发总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Android车载开发总结
好久不更新了,今天早上看到去年5⽉底离开华阳,写的⼀篇总结报告,很有感触,⼀起分享;也希望前公司你能够越来越好,能够成为世界性公司。
2014年5⽉29⽇ 10:40
Author:forrestjr forrestjr@
关于⾏业的思考:
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、sdcar
d、usb的兼容性分析是前期就需要评估的(如果兼容性不过关可能还需要电⼦的介⼊);
d、多媒体的兼容性,以及多媒体的显⽰效果也⾮常的重要;
e、mpu端混⾳输出和单声⾳输出,结合mcu声⾳通道,是否能够满⾜要求,也是项⽬前期评估重要的⼀环;
f、⽅案Android CTS认证能够达到多少百分百,这关系的Android系统对三⽅软件的兼容性;
2)扩展功能的⽀持:mirrorcast接收端⽀持、双屏显⽰、双屏异显、后台视频异步输出、后台UI绘制等可⽤于车载的功能,在开发之前同样需要调研和评估;
关于开发过程的思考:
开发过程就是将开发之前评估和设计好的模块功能实现与细化的过程;
这部分靠的是每个⼈的认真对待、有效沟通,每实现⼀个功能需反复的验证和测试(软件和硬件),并且在开发过程中做好开发记录:
a、代码注释、编程规范;
b、细化功能的反复验证,以及验证报告;
c、svn代码提交记录,以及项⽬负责⼈的审核;
d、开发记录、问题解决记录、沟通纪要;
在开发过程中靠的是开发⼈员的认真、细⼼、沟通及耐⼼,加之相对合理的开发时间和激励措施;
此开发过程重在执⾏;
关于开发后期与测试的思考:
开发后期,个⼈认为每个开发⼈员起码需要投⼊⼀半时间在测试和反复验证与⾃⼰开发相关的功能模块上;我们做的是产品,⽽不单是实现功能;
同时测试⼈员在此阶段也需要进⾏⾼强的的整机测试和⾃动化测试;
此阶段的任务是查出潜在问题、完善稳定功能、优化性能;
此阶段会让⼈觉得很枯燥、或是烦躁,但他确实产品化关键的环节;
个⼈认为此阶段没有捷径,只能靠⾟勤、汗⽔和时间来保证产品的质量;
如果开发过程控制好,每个功能都进⾏过反复的验证,开发都有详细的记录,那么开发后期和测试阶段相对就会轻松些;
此开发过程重在勤劳;
关于开发分析与设计的思考:
开发分析应包括开发前期的⽅案选择和评估;
开发前期的⽅案选择和评估也应该属于开发的过程,尤其在嵌⼊式⾏业(很难有⼀个项⽬负责⼈能懂得从上⾄下的所有技术),应有开发技术⼈员的全程参与;
开发分析不能在开发中期或是后期再来补,没有多少的效果和意义;
开发分析应该包含产品化的部分,最好能通过产品经理持续改进和跟踪;
在开发分析完善的情况下,好的设计才是⼀个产品的竞争⼒和附加值;
好的设计应当是在有稳定平台的基础上,能够设计出具有创新、改善⽤户需求的功能、设计出精致、舒适的⼈机交互界⾯;
产品的稳定、流畅、兼容是基础,⽽设计上的新颖、贴切、舒适才是产品的⽣命⼒;。