实现Android智能移动终端语音通话的方法及系统
技术领域
本发明涉及通信技术领域,尤其涉及一种实现Android智能移动终端语音通话的方法及系统。
背景技术
PCM(pulse code modulation),即脉冲编码调制。它是音频模拟信号经过采样、量化、编码后产生的数字信号表示形式。脉冲编码调制是70年代末发展起来的,记录媒体之一的CD,80年代初由飞利浦和索尼公司共同推出。脉冲编码调制的音频格式也被DVD-A所采用,它支持立体声和5.1环绕声,1999年由DVD 讨论会发布和推出的。脉冲编码调制的比特率,从14-bit发展到16-bit、18-bit、20-bit直到24-bit;采样频率从44.1kHz发展到192kHz。
Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。
在目前的移动通信领域中,Android平台正迅速成为了众多移动智能终端厂商的首选平台和解决方案。由于移动通信模块(如3G模块)产品型号多样,不同厂家通信模块硬件结构不同,且硬件输入/输出的音频(语音)信号编码不同,格式不统一。使得OEM产商要在Android解决方案上支持移动通话功能变得很艰难。
OEM( Original Equipment Manufacturer )是受托厂商按原厂之需求与授权,依特定的条件而生产。所有的设计图等都完全依照下游厂商的设计来进行制造加工。而在目前的Android终端(如平板)市场中,OEM厂商一般是技术方案的提供者,他们会设计提供几款通用的方案供具体应用开发商使用。
现有的,解决Android系统上移动通话功能常采用硬件的方式设计,通过将通信模块的音频接口与音频设备连接。还需要在驱动层实现相应的音频驱动,进行音频编码的调解,以及控制音源的切换、输入、输出等。但是,会带来以下几个问题:
1、由于不同通信模块的输入、输出的音频硬件接口标准不同,OEM厂商方案设计上需要根据不同的模块对设备主板进行相应修改。这就造成解决方案不通用,或者有的设计方案干脆就放弃了语音功能的实现,而由客户自行修改,进行二次开发。开发难度大。
2、由于通信模块音频编码不同,需要采用不同厂家的调制/解调器(Codec)设备,以及该设备的驱动开发、输入/输出设备的调试,开发难度大。
3、由于是采用了硬件上的连接,需要处理不同输入/输出设备的音频数据和通讯模块之间的互相传输,并且还需要支持系统声音音量控制等功能的软件实现,增加了软/硬件的上的设计难度。
4、由于采用了上述的实现方案,也失去了Android系统支持的音频设备的管理,多路复用,音频流的路由,声音策略控制,输入/输出设备的动态切换,多道音频并行处理等一系列新功能;降低了系统的兼容性和系统的友好性。
发明内容
本发明的目的在于提供一种实现Android智能移动终端语音通话功能的方法及系统。
本发明的目的是通过以下技术方案实现的。
一种实现Android智能移动终端语音通话功能的方法,包括步骤:
a:创建应用层到通信模块的PCM语音传输通道和指令控制通道;
b:PCM语音模块读取通信模块的下行语音数据,经编码格式转化后,通过Android系统音频输出接口进行播放;
c:PCM语音模块通过Android系统音频输入接口采集语音数据,经编码格式转化后,发送到通信模块,实现上行语音数据的发送。
优选的, 所述步骤a具体包括:
a1:用户发送语音通话请求;
a2:通信控制模块向通信模块发送指令,请求建立语音通话链路;
a3:通信控制模块开启PCM语音模块,处理PCM语音通话;
d:PCM语音模块开启通信模块语音通道。
优选的, 步骤b之后还包括:
向通信控制模块发送通话结束请求;
通信控制模块将请求转化为相应指令发送给通信模块,要求结束通话链路。
优选的, 所述Android智能移动终端包括:手机、平板设备及装载Android操作系统并具备语音通信模块的终端设备。
一种实现Android智能移动终端语音通话功能的系统,包括:通信控制模块、PCM语音模块、通信模块及Android系统;
Android系统用于创建应用层到通信模块的PCM语音传输通道和指令控制通道;
通信控制模块用于接收或发送指令到通信模块,建立语音通话链路;
PCM语音模块用于读取通信模块的下行语音数据,经编码格式转化后,通过Android系统音频输出接口进行播放;以及用于通过Android系统音频输入接口采集语音数据,经编码格式转化后,发送到通信模块,实现上行语音数据的发送。
优选的,所述通信控制模块还用于开启PCM语音模块,处理PCM语音通话。
优选的,所述PCM语音模块还用于开启通信模块语音通道,进行PCM语音数据的传输。
优选的,所述Android智能移动终端包括:手机、平板设备及装载Android操作系统并具备语音通信模块的终端设备。
本发明与现有技术相比,本发明基于Android框架层处理通信模块PCM格式语音数据的传输,快速实现语音通话功能,并由Android的无线接口层(Radio Interface Layer,即通信控制模块)实现语音通话的流程控制,与应用层以及Android音频系统层实现无缝集成和对接。实现简单,快速,模块化程度高,并大大节省了硬件成本和开发资源;系统兼容性好,便于通信模块在Android下语音通话功能的推广。
附图说明
图1 是Android智能移动终端语音通话功能的层次结构框图;
图2 是Android智能移动终端语音通话功能的主动呼叫信令流程图;
图3 是Android智能移动终端语音通话功能的被动呼叫信令流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参阅图1所示,本发明Android智能移动终端语音通话功能的层次结构,包括:应用层用户端、通信控制模块、PCM语音模块、通信模块及Android音频系统;
应用层用户端用于向Android无线接口层的通信控制模块发出开始语音通话的请求;
通信控制模块用于向无线通信模块发出指令,请求建立语音通话链路。无线通信模块用于将通话建立的结果通知给通信控制模块,以便做相应的处理。
当通话链路建立成功后,通信控制模块用于开启PCM语音功能模块,处理PCM语音通话。
PCM语音模块用于开启通信模块的语音通道,进行PCM语音数据的传输。如将收到的下行(PCM)语音数据(或经过编码转化后)发给Android音频系统进行播放,或将从Android音频系统采集到的声音数据(或经过编码转化后)发给通信模块进行上行语音数据的发送。
同时,PCM语音模块还用于打开Android音频系统的音频处理接口,以便在Android终端设备中进行声音的播放和采集。
Android音频系统用于进行声音的播放和采集,下行声音数据流经Android系统的流控制和声音策略的控制后,声音自动发送到相应的音频输出设备播放。而上行语音数据的产生是经过Android音频系统根据声音策略和路由,自动选择相应的声音输入设备(如Mic、内置或外置话筒),采集来自Android终端用户的声音数据。
Android音频系统还用于进行音频设备的管理,音频流的路由,声音策略控制,输入/输出设备的动态切换,多道音频并行处理,以及音量控制等功能。
本发明中,Android智能移动终端语音通话功能的可分为:
1)主动呼叫,如图2所示,由用户主动发起电话呼叫时,根据通讯模块返回的通话链路建立成功的消息,打开PCM语音模块实现语音通话。具体实现流程包括:
步骤1:用户发起语音通话请求;
步骤2:通信控制模块接收到请求后,将请求转化为通信模块的指令,发给通信模块;
步骤3:通信控制模块等待硬件通信模块成功建立通话链路;
步骤4:通信模块通话链路建立后,通信控制模块通知PCM语音模块开始进行语音通话的处理;
步骤5:PCM语音模块以一个独立进程或线程运行,处理通话的下行语音。打开通信模块对应的语音口字符设备文件,建立通信模块语音数据的传输通道,读取来自通信模块的下行语音数据。
步骤6:同时打开Android音频系统的音频处理设备(或接口),将接收来自通信模块的下行语音数据,发给Android音频系统的音频处理设备(或接口)进行处理。声音数据流经过Android音频系统的流控制和声音策略的控制后,声音自动发送到相应的音频输出设备。
步骤7:如步骤5,6所述,PCM语音模块在处理下行通话语音的同时处理上行通话语音。此时还需要打开Android音频系统的声音输入设备(或接口)。Android音频系统根据声音策略和路由控制,自动选择并打开相应的声音输入设备(或接口),通过该设备(或接口)读取来自Android终端Mic、内置或外置话筒等输入设备录下的声音数据。
步骤8:再将输入的声音数据转化成通信模块所要求的数据格式,发送给通信模块,从而实现了上行语音数据的发送。
在结束通话之前,反复执行上述步骤5、6、7、8,连续处理上下行语音,实现双方通话。
步骤9:客户向通信控制功能模块请求结束本次通话。
步骤10:通信控制模块将请求转化为相应的指令,发送给通信模块,要求结束通话链路。
步骤11:通知PCM语音模块,关闭通话语音数据的处理。
2)被动呼叫,如图3所示,当用户的移动终端作为被呼叫方时,根据通讯模块的来电通知和通话链路建立等消息,打开PCM语音数据处理功能实现语音通话。
具体实现流程包括:
步骤21:通信模块向通信控制模块发送来电呼叫请求;
步骤22:通信控制模块通知用户接听来电;
步骤23:通信控制模块向通信模块发送指令,请求建立通话链路;
步骤24:通信模块通话链路建立后,通信控制模块通知PCM语音模块开始进行语音通话的处理;
步骤25:PCM语音模块以一个独立进程或线程运行,处理通话的下行语音。打开通信模块对应的语音口字符设备文件,建立通信模块语音数据的传输通道,读取来自通信模块的下行语音数据。
步骤26:同时打开Android音频系统的音频处理设备(或接口),将接收来自通信模块的下行语音数据,发给Android音频系统的音频处理设备(或接口)进行处理。声音数据流经过Android音频系统的流控制和声音策略的控制后,声音自动发送到相应的音频输出设备。
步骤27:如步骤25,26所述,PCM语音模块在处理下行通话语音的同时处理上行通话语音。此时还需要打开Android音频系统的声音输入设备(或接口)。Android音频系统根据声音策略和路由控制,自动选择并打开相应的声音输入设备(或接口),通过该设备(或接口)读取来自Android终端Mic、内置或外置话筒等输入设备录下的声音数据。
步骤28:再将输入的声音数据转化成通信模块所要求的数据格式,发送给通信模块,从而实现了上行语音数据的发送。
在结束通话之前,反复执行上述步骤25、26、27、28,连续处理上下行语音,实现双方通话。
步骤29:通信模块向通信控制功能模块请求结束本次通话。
步骤210:通信控制模块通知PCM语音模块,关闭通话语音数据的处理。
上述被动呼叫流程与主动呼叫流程类似,其中,最关键的部分是PCM语音数据处理方法,两者实现方式一样,都是对通讯模块的PCM语音数据和Android系统的音频输入、输出设备进行处理。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。