CarLife开发总结

CarLife开发总结

百度CarLife是百度推出的车联网解决方案之一,目前分为前装集成与后装安装两种方式提供


准备资料

前装项目申请:http://carlife.baidu.com/carlife/caroem/myproj
前装项目申请完成后,得到一个百度渠道号与集成资料
后装源码地址:https://github.com/ApolloAuto/apollo-DuerOS/tree/master/CarLife-Android-Vehicle

集成CarLife库

前装项目申请成功后,百度会提供一个CarLife动态链接库(libcarlifevehicle.so)的源码与使用说明,动态库的主要功能是CarLife中各数据通道(command channel, video channel, media channel, tts channel, vr channel, control channel)的建立和数据收发(包括数据包的报文封装和解析过程)。
将库集成进Android编译环境,首先需要根据Makefile文件配置Android.mk
LOCAL_SRC_FILES :包含utility,protobuf,modules,libwrapper,core中的所有.cpp .cc为结尾的文件。 需要注意的是,protobuf中的.cc文件,需要修改为.cpp为后缀。
LOCAL_C_INCLUDES : 需要包含protobuf库中的引用h文件,stlport中的引用h文件。
LOCAL_CFLAGS := -DGOOGLE_PROTOBUF_NO_RTTI 指定google protobuf属性
CarLife的依赖库有protobuf 2.5.0, stlport.
stlport的依赖在android 6.0以下版本中,源码在externel中,被集成进系统,编译后会生成libstlport.so编译,此时编译libcarlifevehicle.so时,只需要通过LOCAL_SHARED_LIBRARIES += libstlport即可。 而在6.0版本以及以上版本中,可以通过LOCAL_LDFLAGS := prebuilts/ndk/current/sources/cxx-stl/stlport/libs/armeabi/libstlport_static.a 来指定编译时的依赖。

CarLife架构设计

CarLife开发总结_第1张图片

开发总结

CarLife的开发完成,主要有以下几个工作点:

  1. CarLife lib库的集成:lib库主要的功能就是提供CarLife服务数据通道的建立,数据报文的封装与解析,我们需要使用Android.mk文件将其加入Android系统的交叉编译环境中。
  2. Usb通信: CarLife的握手与通信主要是通过Android的AOA方式来进行,具体通信方式已经单独作为介绍: USB开发------android AOA开发
  3. CarLife视频显示: CarLife主要是采集手机端的视频流,然后通过USB以H.264的方式发送到车机端,车机端针对H.264进行硬解码播放,播放主要用MediaCodec, 具体使用方式已经单独作为介绍 android使用MediaCodec实现异步视频编解码
  4. CarLife音频播放: CarLife的音频数据是以PCM流的形式发送到车机端,因此车机端只需要使用AudioTrack创建对应的配置来播放即可,注意音频流数据的字节序大小端是以小端的方式存在的。

你可能感兴趣的:(Android车联网)