APP下载

基于Android的车载娱乐系统的音频流传输策略的研究

2020-04-21张士宏王翀刘丹冯冲

数字技术与应用 2020年1期

张士宏 王翀 刘丹 冯冲

摘要:本文在对Android原生音频流处理方案进行深入研究的基础上,提出了一种新的音频流传输策略,很好地满足车载娱乐系统的各种应用场景,非常适合车载Android娱乐系统的定制化开发方案的实现。

关键词:Android;音频流传输;车载娱乐

中图分类号:TP311.52 文献标识码:A 文章编号:1007-9416(2020)01-0062-02

1 Android操作系统及IVI系统介绍

Android是当前消费电子各领域最为活跃的嵌入式操作系统之一,它已经广泛应用在智能手机、平板电脑、电视、智能手表等给各类电子产品中[1]。Google公司在2019年推出的最新Android版本是Android 10.0。

车载信息娱乐系统(IVI)是一类基于车身总线系统和网络服务的独立综合信息处理系统。IVI系统通常要支持实时路况、三维导航、辅助驾驶、车辆信息、无线通讯、影音娱乐等一系列车载应用[2]。

2 Android操作系统原生音频流传输策略分析

Android操作系统的音频系统负责各种音频数据流的传输、调度和策略控制,并负责音频设备的管理,它是Android操作系统中最复杂的子系统之一。Android原生音频系统的软件架构主要包含了APP层、Framework层、Lib层、Hal层以及driver层[3]。

APP层主要包含了各种应用程序。Framework层提供音频流的播放和采集策略以及声音控制、通道选择、音效设置等功能。Lib层又被称为native framework层,提供音频数据的输出控制、录音数据的采集控制、音频事务的综合管理、音频设备的切换、音量调节策略及输入、输出流设备的管理等。Hal层主要提供了调用音频声卡的抽象接口以及音频流控制方法。Driver层主要功能是直接操作声卡物理设备来实现指定动作。

3 Android操作系统原生音频流传输策略的改进

由于原生Android音频系统不满足IVI系统对于音频系统的需求,故需要对原生Android音频系统进行定制化开发。原生Android音频模块与IVI系统主要区别如下:(1)原生Android只支持单声道和双声道,而IVI系统有时需要多声道;(2)原生Android音源类型比较少且通过AudioFocus机制来控制各音源的焦点抢占,而IVI系统有导航音频流、蓝牙电话音频流、FM音频流、在线音乐音频流等等,并且除了AudioFocus机制之外还存在各音源混音和衰减等需求;(3)IVI系统要支持Carlife等车机端与手机端的互动功能,此外还有一些场景需要实现智能语音控制,这对于音频数据采集以及噪声控制又提出更高的要求。

根据IVI系统的这些音频流处理需求,我们提出了一种基于Android原生音频子模块的音频流传输改进策略,此策略能够很好的满足IVI系统对音频的需求。改进后音频流传输策略如图1所示,图中标示了各模块间交互双方和音頻流的传递方向。新的音频流传输策略有以下几个方面的改进:

(1)在Driver层,针对不同的数据输入源独立出三个输入子声卡,分别是Mic、Tuner和BT声卡。Mic声卡负责从麦克风采集环境音频数据,用于电话和Carplay/Carlife等语音识别场景。Tuner声卡从FM芯片中采集FM音频流用于广播的播放。BT声卡负责从蓝牙芯片采集HFP音频数据用于蓝牙电话远端音频的播放,同时也负责将Mic声卡采集到的音频数据发送到远端HFP。对于音频输出流,在一个独立实时多媒体声卡设备的基础上针对输出流类型独立出多个输出子声卡,各子声卡分别将不同的音频流数据传输到音频处理芯片上处理并通过speaker播放。

(2)在Hal层中,在StreamIn类中通过调用tinyalsa开源库实现对各音频输入流声卡的数据采集功能。同时根据音源类型的不同实现数据采集时的多声道适配和采样率适配,以满足IVI系统的要求。在StreamOut类中通过调用tinyalsa开源库实现将不同的音频输出流数据写入到对应的输出子声卡。还需要改造HIDL模块的方法,以适配StreamIn类方法和StreamOut类方法的改变。同时,增加一个EC模块,利用一定的回声消除算法,消除音频数据中的回声和杂音,提升音频质量。

(3)在framework层,修改AudioFlinger模块,加入对三个音频输入流以及多个音频输出流的支持,通过调用libfmq开源库实现framework层与Hal层之间的数据传输与控制命令发送。同时在AudioService模块中调用AudioTrack与AudioRecord提供的方法,实现音频流的逻辑控制接口。

4 结语

本文提出了一种基于Android原生音频架构的改进型音频流传输策略,可适应车载娱乐系统的不同场景,支持灵活配置声卡数量以及灵活安排混音和音量调节策略。随着汽车电子化的程度越来越高,汽车系统逐步朝着智能化的方向发展,对车载娱乐系统的需求也会越来越丰富。把Android技术应用到IVI系统是一个很好的选择,既能充分发挥Android在影音娱乐方面的优势,又节省大量开发成本。

参考文献

[1] 冯少奇,巩思亮,陈春明.面向Android的音视频传输策略的研究[J].电视技术,2017,41(6):9-14.

[2] 石攀,董天哥,刘畅.基于用户体验的车载信息娱乐系统研究[J].机械工程与自动化,2019(3):224-226.

[3] 王峻.基于Android系统的音频架构[J].电声技术,2012,36(11):76-79.