说明书
发明名称 : 一种音频同步录放系统及方法、存储介质
[0002]
本申请基于申请号为201610235170.7、申请日为2016年04月15日的中国专利申请提出,并要求该中国专利申请的优先权,该中国专利申请的全部内容在此引入本申请作为参考。
[0003]
本发明涉及通讯技术领域,尤其涉及一种基于Android系统的音频同步录放系统及方法、存储介质。
[0004]
现有技术中Android系统的音频同步录放是建立在硬件混音或数字信号处理器(Digital Signal Processing,简称DSP)基础上实现的。Android平台开发的音频同步录放延时长的缺点基本是继承了Linux系统的先天不足。音频延迟的首要原因来自底层驱动,Android系统采用硬件抽象架构(Hardware Abstraction Layer,简称HAL)进行应用架构和驱动通信,最底层音频编译驱动仍基于Linux核心,绝大多数使用Linux内核中的高级Linux声音架构(Advanced Linux Sound Architecture,简称ALSA)。ALSA本身就是比较臃肿,如图1所示,为Linux ALSA音频架构示意图。如图2所示,为Android 2.3后的音频架构示意图,可以看出两种音频架构具有相似之处。
[0005]
采用Android音频原生架构,时间耗时主要在以下几个方面:Android臃肿的音频架构;Java层的数据处理;数据穿越过程(从原生层到Java层或从Java层到原生层)。采用原生架构,先用音频引擎把音频数据流提取到Java层,进行混音、音效等处理后,再通过音频播放将声音放出,发现同 步录放延时基本超过了100ms,具有明显的延时。
[0007]
为了解决上述技术问题,本发明实施例提供了一种基于Android系统的音频同步录放系统及方法、存储介质,解决了现有技术中基于Android系统的原生音频系统存在高延时的问题。
[0008]
本发明实施例提供了一种基于Android系统的音频同步录放系统,包括:
[0009]
设置于Android系统的应用框架层中的音频定制服务子系统和音频定制硬件抽象子系统,其中,所述音频定制服务子系统和音频定制硬件抽象子系统均独立于Android系统的原生音频系统;
[0010]
所述音频定制硬件抽象子系统,配置为调用底层的录音设备的驱动程序以进行音频数据的录制,以及,调用底层的放音设备的驱动程序以进行混音数据的播放;
[0011]
所述音频定制服务子系统,配置为接收应用程序模块发送的同步录放命令,根据所述同步录放命令,控制所述音频定制硬件抽象子系统打开所述录音设备以及所述放音设备,读取所述音频定制硬件抽象子系统录制的音频数据并进行混音处理,得到混音数据。
[0012]
优选地,所述音频定制服务子系统包括:
[0013]
录音模块,配置为根据所述同步录放命令,生成启动录音设备指令,指示所述音频定制硬件抽象子系统调用底层的录音设备进行音频数据的录制,并将所述音频数据缓存在录音缓存模块中;
[0014]
解码器,配置为在当前已播放背景音乐时,解码背景音乐,并将解码得到的背景音乐数据缓存在背景音乐缓存模块中;
[0015]
混音模块,配置为在当前已播放背景音乐时,读取所述录音缓存模块中的音频数据和所述背景音乐缓存模块中的背景音乐数据进行混音处理, 生成混音数据;以及,在当前未播放背景音乐时,读取所述录音缓存模块中的音频数据和背景音乐缓存模块中预存的静音数据进行混音处理,生成混音数据;将所述混音数据缓存在混音缓存模块中;
[0016]
放音模块,配置为根据所述同步录放命令,生成启动放音设备指令,指示所述音频定制硬件抽象子系统调用底层的放音设备进行所述混音数据的播放。
[0017]
优选地,所述音频同步录放系统还包括:音频定制Java接口和音频定制原生结构模块,其中,所述音频定制Java接口和音频定制原生结构模块均运行于Android系统的应用框架层;
[0018]
音频定制Java接口,配置为提供应用程序模块与音频定制原生结构模块之间的程序编程的接口;
[0019]
音频定制原生结构模块,配置为作为Binder客户端,与作为Binder服务端的音频定制服务子系统进行Binder通信,提供音频定制Java接口与所述音频定制服务子系统之间的对接。
[0020]
优选地,所述音频定制Java接口,还配置为从应用程序模块获取所述同步录放命令,并发送至所述音频定制原生结构模块;
[0021]
所述音频定制原生结构模块,还配置为发送所述同步录放命令到所述音频定制服务子系统。
[0022]
优选地,所述音频同步录放系统还包括:设置于Android系统的应用层中的应用程序模块;
[0023]
所述应用程序模块,配置为通过音频定制Java接口和音频定制原生结构模块发送同步录放命令到音频定制服务子系统。
[0024]
本发明实施例还提供了一种基于Android系统的音频同步录放的方法,包括:
[0025]
通过设置于Android系统的应用框架层中的音频定制服务子系统,接收 应用程序模块发送的同步录放命令,根据所述同步录放命令,控制音频定制硬件抽象子系统打开录音设备以及放音设备,所述音频定制硬件抽象子系统设置于Android系统的应用框架层中;
[0026]
通过所述音频定制硬件抽象子系统,调用底层的录音设备的驱动程序以进行音频数据的录制;
[0027]
通过所述音频定制服务子系统,读取所述音频定制硬件抽象子系统录制的音频数据并进行混音处理,得到混音数据;
[0028]
通过所述音频定制硬件抽象子系统,调用底层的放音设备的驱动程序以进行混音数据的播放。
[0029]
优选地,所述读取所述音频定制硬件抽象子系统录制的音频数据并进行混音处理的步骤,包括:
[0030]
在当前已播放背景音乐时,解码背景音乐,得到解码得到的背景音乐数据,读取所述录音缓存模块中的音频数据和背景音乐缓存模块中的背景音乐数据进行混音处理,生成混音数据;
[0031]
在当前未播放背景音乐时,读取所述录音缓存模块中的音频数据和背景音乐缓存模块中预存的静音数据进行混音处理,生成混音数据。
[0032]
优选地,所述读取所述音频定制硬件抽象子系统录制的音频数据并进行混音处理的步骤,还包括:
[0033]
进一步将录制得到的音频数据保存在录音缓存模块,将混音得到的混音数据保存在混音缓存模块,以及,将解码得到的背景音乐数据保存在背景音乐缓存模块中,其中,所述录音缓存模块、混音缓存模块和背景音乐缓存模块均位于所述音频定制服务子系统中。
[0034]
本发明实施例又提供了一种计算机存储介质,所述计算机存储介质中存储有计算机程序,所述计算机程序用于执行以上所述的基于Android系统的音频同步录放的方法。
[0035]
本发明的一个或多个实施例的有益效果是:
[0036]
上述方案中,根据多个多媒体引擎并列存在,引擎独自管理思想设计出独立于Android系统的原生音频系统的音频同步录放系统,不被原生音频系统管理,采用独自管理管理的方式来实现降低延时的目的。具体地,设计独立于Android系统的原生音频系统的音频定制服务子系统和音频定制硬件抽象子系统,其中,音频定制服务子系统独立地进行音频录制,混音处理以及混音数据的播放;音频定制硬件抽象子系统调用底层的录音设备的驱动程序以进行音频数据的录制,以及调用底层的放音设备的驱动程序以进行混音数据的播放。而在Java层只进行同步录放的开始和停止命令。该方案的音频同步录放的延时可以达到50ms以下,能够满足音频同步录放的要求。
[0037]
图1为Linux ALSA音频架构示意图;
[0038]
图2为Android 2.3后的音频架构示意图;
[0039]
图3为本发明实施例提供的一种音频同步录放系统的结构示意图;
[0040]
图4为本发明实施例提供的一种音频同步录放的方法的流程图。
[0041]
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
[0042]
如图3所示,本发明的实施例提供了一种基于Android系统的音频同步录放系统,包括:设置于Android系统的应用框架层中的音频定制服务子系 统11和音频定制硬件抽象子系统12,其中,音频定制服务子系统11和音频定制硬件抽象子系统12均独立于Android系统的原生音频系统。
[0043]
该实施例中,采用独立于Android系统的原生音频系统的音频定制服务子系统11和音频定制硬件抽象子系统12,使该音频同步录放系统可以独立于Android系统进行管理,不受Android系统臃肿的音频构架的影响,从而降低音频同步录放的延时。
[0044]
音频定制硬件抽象子系统12,配置为调用底层的录音设备的驱动程序以进行音频数据的录制,以及,调用底层的放音设备的驱动程序以进行混音数据的播放。
[0045]
该实施例中,音频定制抽象子系统是对底层驱动的一个封装,音频定制服务子系统11的录音模块111和放音模块114均调用音频定制硬件抽象子系统12的接口。
[0046]
音频定制服务子系统11,配置为接收应用程序模块15发送的同步录放命令,根据同步录放命令,控制音频定制硬件抽象子系统12打开录音设备以及放音设备,读取音频定制硬件抽象子系统12录制的音频数据并进行混音处理,得到混音数据。
[0047]
该实施例中,音频定制服务子系统11是系统服务,在终端开机时自启动。在开启后,接收通过应用程序模块15发送的同步录放命令时,录音模块111获取录音设备的录音数据;同时混音模块113将录音数据进行混音处理,得到混音数据;放音模块114获取混音数据,并通过放音设备播放。在接收同步录放命令后,启动录音模块111,混音模块113和放音模块114,以实现同步录放的目的。
[0048]
进一步地,音频定制服务子系统11包括:
[0049]
录音模块111,配置为根据同步录放命令,生成启动录音设备指令,指示音频定制硬件抽象子系统12调用底层的录音设备进行音频数据的录制, 并将音频数据缓存在录音缓存模块115中。
[0050]
该实施例中,用户通过应用程序模块15输入同步录放命令,录音模块111在接收同步录放命令时,生成启动录音设备的指令,指示音频定制硬件抽象子系统12调用底层的录音设备进行音频数据的录制,在进行音频数据录制的同时,读取录音数据并缓存到录音缓存模块115中。在录音设备完成音频数据的录制后,录音模块111生成关闭录音设备的指令,指示音频定制硬件抽象子系统12关闭底层的录音设备。
[0051]
解码器112,配置为在当前已播放背景音乐时,解码背景音乐,并将解码得到的背景音乐数据缓存在背景音乐缓存模块116中。
[0052]
该实施例中,只有在播放背景音乐时,解码器112才启动,并对背景音乐进行解码,得到背景音乐数据,并将背景音乐数据缓存到背景音乐缓存模块116中。同时,背景音乐缓存模块116中还缓存有预设的静音数据,用于在未播放背景音乐时,混音模块113读取预设的静音数据与录音数据进行混音处理。
[0053]
混音模块113,配置为在当前已播放背景音乐时,读取录音缓存模块115中的音频数据和背景音乐缓存模块116中的背景音乐数据进行混音处理,生成混音数据;以及,在当前未播放背景音乐时,读取录音缓存模块115中的音频数据和背景音乐缓存模块116中预存的静音数据进行混音处理,生成混音数据;将混音数据缓存在混音缓存模块117中。
[0054]
放音模块114,配置为根据同步录放命令,生成启动放音设备指令,指示音频定制硬件抽象子系统12调用底层的放音设备进行混音数据的播放。
[0055]
该实施例中,用户通过应用程序模块15输入同步录放命令,放音模块114在接收同步录放命令时,生成启动放音设备的指令,指示音频定制硬件抽象子系统12调用底层的放音设备播放混音数据。在放音设备完成混音数据的播放后,放音模块114生成关闭放音设备的指令,指示音频定制硬件 抽象子系统12关闭底层的放音设备。上述方案即实现了音频的同步录放。
[0056]
进一步地,音频同步录放系统还包括:音频定制Java接口13和音频定制原生结构模块14,其中,音频定制Java接口13和音频定制原生结构模块14均运行于Android系统的应用框架层;音频定制Java接口13,配置为提供应用程序模块15与音频定制原生结构模块14之间的程序编程的接口;音频定制原生结构模块14,配置为作为Binder客户端,与作为Binder服务端的音频定制服务子系统11进行Binder通信,提供音频定制Java接口13与音频定制服务子系统11之间的对接。
[0057]
该实施例中,音频定制Java接口13是Android系统的应用框架层提供给应用程序模块15的一套应用程序编程接口。应用程序模块15通过这套应用程序编程接口,可以完成上麦、下麦、播放控制等功能,即为K歌应用服务。音频定制原生结构模块14与音频定制Java接口13通过Java本地接口(Java Native Interface,简称JNI)对接,提供Java层和本地代码间的双向交互。音频定制原生结构模块14与音频定制服务子系统11通过Binder通讯。上述方案实现了应用程序模块15与音频定制服务子系统11之间的对接。
[0058]
进一步地,所述音频定制Java接口13,还配置为从应用程序模块15获取所述同步录放命令,并发送至所述音频定制原生结构模块14;
[0059]
所述音频定制原生结构模块14,还配置为发送所述同步录放命令到所述音频定制服务子系统11。
[0060]
该实施例中,应用程序模块15通过音频定制Java接口13和音频定制原生结构模块14与音频定制服务子系统11实现对接,音频定制服务子系统11可以接收应用程序模块15发送的同步录放命令,并且根据同步录放命令启动录音模块111、混音模块113以及放音模块114。
[0061]
进一步地,音频同步录放系统还包括:设置于Android系统的应用层中 的应用程序模块15;
[0062]
应用程序模块15,配置为通过音频定制Java接口13和音频定制原生结构模块14发送同步录放命令到音频定制服务子系统11。
[0063]
该实施例中,应用程序模块15通过音频定制Java接口13和音频定制原生结构模块14与音频定制服务子系统11实现对接,应用程序模块15发送同步录放命令到音频定制服务子系统11,指示音频定制服务子系统11启动录音模块111、混音模块113以及放音模块114,进行音频同步录放。
[0064]
所述音频定制硬件抽象子系统以及音频定制服务子系统均可以运行于计算机上,可由位于计算机上的中央处理器(CPU)、或微处理器(MPU)、或DSP、或可编程门阵列(FPGA)实现。
[0065]
如图4所示,本发明实施例还提供了一种基于Android系统的音频同步录放的方法,包括:
[0066]
S101、通过设置于Android系统的应用框架层中的音频定制服务子系统11,接收应用程序模块15发送的同步录放命令,根据同步录放命令,控制音频定制硬件抽象子系统12打开录音设备以及放音设备,音频定制硬件抽象子系统12设置于Android系统的应用框架层中;
[0067]
该实施例中,音频定制服务子系统11接收应用程序模块15发送的同步录放命令,启动录音模块111,混音模块113和放音模块114,进行音频的同步录放。
[0068]
S102、通过音频定制硬件抽象子系统12,调用底层的录音设备的驱动程序以进行音频数据的录制;
[0069]
该实施例中,音频定制服务子系统11在接收同步录放命令后,录音模块111生成启动录音设备指令,指示音频定制硬件抽象子系统12调用底层的录音设备的驱动程序进行音频数据的录制,并且在音频数据录制完成之后,关闭录音设备。
[0070]
S103、通过音频定制服务子系统11,读取音频定制硬件抽象子系统12录制的音频数据并进行混音处理,得到混音数据;
[0071]
该实施例中,录音设备在进行录音数据的录制的同时,将录音数据缓存入录音缓存模块115中。同时,混音模块113获取录音数据进行混音处理,得到混音数据,并将混音数据缓存到混音缓存模块117中。
[0072]
S104、通过音频定制硬件抽象子系统12,调用底层的放音设备的驱动程序以进行混音数据的播放。
[0073]
该实施例中,混音模块113将得到的混音数据缓存入混音缓存模块117,同时放音模块114获取混音数据,并生成启动放音设备指令,指示音频定制硬件抽象子系统12调用底层的放音设备的驱动程序进行混音数据的播放,并且在完成混音数据的播放后,关闭放音设备。
[0074]
进一步地,读取音频定制硬件抽象子系统12录制的音频数据并进行混音处理的步骤,包括:
[0075]
在当前已播放背景音乐时,解码背景音乐,得到解码得到的背景音乐数据,读取录音缓存模块115中的音频数据和背景音乐缓存模块116中的背景音乐数据进行混音处理,生成混音数据;
[0076]
在当前未播放背景音乐时,读取录音缓存模块115中的音频数据和背景音乐缓存模块116中预存的静音数据进行混音处理,生成混音数据。
[0077]
该实施例中,只有在当前已有背景音乐播放时,解码器112才启动,解码背景音乐得到背景音乐数据,并缓存到背景音乐缓存模块116,混音模块113读取录音数据和背景音乐数据进行混音处理;背景音乐缓存模块116中还缓存有预设的静音数据,在当前未播放背景音乐时,混音模块113读取录音数据和预设的静音数据进行混音处理。
[0078]
进一步地,读取音频定制硬件抽象子系统12录制的音频数据并进行混音处理的步骤,还包括:
[0079]
进一步将录制得到的音频数据保存在录音缓存模块115,将混音得到的混音数据保存在混音缓存模块117,以及,将解码得到的背景音乐数据保存在背景音乐缓存模块116中,其中,录音缓存模块115、混音缓存模块117和背景音乐缓存模块116均位于音频定制服务子系统11中。
[0080]
本实施例提供了一种计算机存储介质,所述计算机存储介质中存储有计算机程序,所述计算机程序用于执行以上所述的基于Android系统的音频同步录放的方法。
[0081]
本发明实施例的上述方案中,根据多个多媒体引擎并列存在,引擎独自管理思想设计出独立于Android系统的原生音频系统的音频同步录放系统,不被原生音频系统管理,采用独自管理管理的方式来实现降低延时的目的。具体地,通过设计独立于Android系统的原生音频系统的音频定制服务子系统11和音频定制硬件抽象子系统12,其中,音频定制服务子系统11独立地进行音频录制,混音处理以及混音数据的播放;音频定制硬件抽象子系统12调用底层的录音设备的驱动程序以进行音频数据的录制,以及调用底层的放音设备的驱动程序以进行混音数据的播放。而在Java层只进行同步录放的开始和停止命令。该方案的音频同步录放的延时可以达到50ms以下,能够满足音频同步录放的要求。
[0082]
在本申请所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
[0083]
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的, 作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
[0084]
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0085]
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0086]
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0087]
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
[0088]
本发明实施例根据多个多媒体引擎并列存在,引擎独自管理思想设计出独立于Android系统的原生音频系统的音频同步录放系统,不被原生音频系统管理,采用独自管理管理的方式来实现降低延时的目的。具体地,设计独立于Android系统的原生音频系统的音频定制服务子系统和音频定制硬件抽象子系统,其中,音频定制服务子系统独立地进行音频录制,混音处理以及混音数据的播放;音频定制硬件抽象子系统调用底层的录音设备的驱动程序以进行音频数据的录制,以及调用底层的放音设备的驱动程序以进行混音数据的播放。而在Java层只进行同步录放的开始和停止命令。该方案的音频同步录放的延时可以达到50ms以下,能够满足音频同步录放的要求。
权利要求书
[权利要求 1]
一种基于Android系统的音频同步录放系统,包括: 设置于Android系统的应用框架层中的音频定制服务子系统和音频定制硬件抽象子系统,其中,所述音频定制服务子系统和音频定制硬件抽象子系统均独立于Android系统的原生音频系统; 所述音频定制硬件抽象子系统,配置为调用底层的录音设备的驱动程序以进行音频数据的录制,以及,调用底层的放音设备的驱动程序以进行混音数据的播放; 所述音频定制服务子系统,配置为接收应用程序模块发送的同步录放命令,根据所述同步录放命令,控制所述音频定制硬件抽象子系统打开所述录音设备以及所述放音设备,读取所述音频定制硬件抽象子系统录制的音频数据并进行混音处理,得到混音数据。
[权利要求 2]
根据权利要求1所述的基于Android系统的音频同步录放系统,其中,所述音频定制服务子系统包括: 录音模块,配置为根据所述同步录放命令,生成启动录音设备指令,指示所述音频定制硬件抽象子系统调用底层的录音设备进行音频数据的录制,并将所述音频数据缓存在录音缓存模块中; 解码器,配置为在当前已播放背景音乐时,解码背景音乐,并将解码得到的背景音乐数据缓存在背景音乐缓存模块中; 混音模块,配置为在当前已播放背景音乐时,读取所述录音缓存模块中的音频数据和所述背景音乐缓存模块中的背景音乐数据进行混音处理,生成混音数据;以及,在当前未播放背景音乐时,读取所述录音缓存模块中的音频数据和背景音乐缓存模块中预存的静音数据进行混音处理,生成混音数据;将所述混音数据缓存在混音缓存模块中; 放音模块,配置为根据所述同步录放命令,生成启动放音设备指令,指示所述音频定制硬件抽象子系统调用底层的放音设备进行所述混音数据的播放。
[权利要求 3]
根据权利要求1所述的基于Android系统的音频同步录放系统,其中,所述音频同步录放系统还包括:音频定制Java接口和音频定制原生结构模块,其中,所述音频定制Java接口和音频定制原生结构模块均运行于Android系统的应用框架层; 音频定制Java接口,配置为提供应用程序模块与音频定制原生结构模块之间的程序编程的接口; 音频定制原生结构模块,配置为作为Binder客户端,与作为Binder服务端的音频定制服务子系统进行Binder通信,提供音频定制Java接口与所述音频定制服务子系统之间的对接。
[权利要求 4]
根据权利要求3所述的基于Android系统的音频同步录放系统,其中, 所述音频定制Java接口,还配置为从应用程序模块获取所述同步录放命令,并发送至所述音频定制原生结构模块; 所述音频定制原生结构模块,还配置为发送所述同步录放命令到所述音频定制服务子系统。
[权利要求 5]
根据权利要求1所述的基于Android系统的音频同步录放系统,其中,所述音频同步录放系统还包括:设置于Android系统的应用层中的应用程序模块; 所述应用程序模块,配置为通过音频定制Java接口和音频定制原生结构模块发送同步录放命令到音频定制服务子系统。
[权利要求 6]
一种基于Android系统的音频同步录放的方法,包括: 通过设置于Android系统的应用框架层中的音频定制服务子系统,接收 应用程序模块发送的同步录放命令,根据所述同步录放命令,控制音频定制硬件抽象子系统打开录音设备以及放音设备,所述音频定制硬件抽象子系统设置于Android系统的应用框架层中; 通过所述音频定制硬件抽象子系统,调用底层的录音设备的驱动程序以进行音频数据的录制; 通过所述音频定制服务子系统,读取所述音频定制硬件抽象子系统录制的音频数据并进行混音处理,得到混音数据; 通过所述音频定制硬件抽象子系统,调用底层的放音设备的驱动程序以进行混音数据的播放。
[权利要求 7]
根据权利要求6所述的基于Android系统的音频同步录放的方法,其中,所述读取所述音频定制硬件抽象子系统录制的音频数据并进行混音处理的步骤,包括: 在当前已播放背景音乐时,解码背景音乐,得到解码得到的背景音乐数据,读取所述录音缓存模块中的音频数据和背景音乐缓存模块中的背景音乐数据进行混音处理,生成混音数据; 在当前未播放背景音乐时,读取所述录音缓存模块中的音频数据和背景音乐缓存模块中预存的静音数据进行混音处理,生成混音数据。
[权利要求 8]
根据权利要求7所述的基于Android系统的音频同步录放的方法,其中,所述读取所述音频定制硬件抽象子系统录制的音频数据并进行混音处理的步骤,还包括: 进一步将录制得到的音频数据保存在录音缓存模块,将混音得到的混音数据保存在混音缓存模块,以及,将解码得到的背景音乐数据保存在背景音乐缓存模块中,其中,所述录音缓存模块、混音缓存模块和背景音乐缓存模块均位于所述音频定制服务子系统中。
[权利要求 9]
一种计算机存储介质,所述计算机存储介质中存储有计算机程序, 所述计算机程序用于执行前述权利要求6至8任一项所述的基于Android系统的音频同步录放的方法。
附图