欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

android carlife 源码,CarLife开发总结

发布时间:2024/1/8 编程问答 55 豆豆
生活随笔 收集整理的这篇文章主要介绍了 android carlife 源码,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的开发完成,主要有以下几个工作点:

CarLife lib库的集成:lib库主要的功能就是提供CarLife服务数据通道的建立,数据报文的封装与解析,我们需要使用Android.mk文件将其加入Android系统的交叉编译环境中。

Usb通信: CarLife的握手与通信主要是通过Android的AOA方式来进行,具体通信方式已经单独作为介绍: USB开发------android AOA开发

CarLife视频显示: CarLife主要是采集手机端的视频流,然后通过USB以H.264的方式发送到车机端,车机端针对H.264进行硬解码播放,播放主要用MediaCodec, 具体使用方式已经单独作为介绍 android使用MediaCodec实现异步视频编解码

CarLife音频播放: CarLife的音频数据是以PCM流的形式发送到车机端,因此车机端只需要使用AudioTrack创建对应的配置来播放即可,注意音频流数据的字节序大小端是以小端的方式存在的。

总结

以上是生活随笔为你收集整理的android carlife 源码,CarLife开发总结的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。