一种实现Android手机语音对讲的方法
技术领域
本发明涉及通讯技术领域,主要适用于实现Android手机语音对讲的方法。
背景技术
在程控电话布线不方便的区域及恶劣的环境中,IP语音通话显得尤为重要,而现有的手机自带的功能一般只能进行录音播放,实时性非常差。在这种情况下,利用3G网络进行实时IP语音通话,不失为一种简单有效的方法。现阶段,Android系统日趋完善和稳定,在此基础上进行的应用软件的开发,已经成为一种可能,并不断推出新的应用。为我们在此平台上进行IP语音的应用开发提供了可靠的支持。另外,在3G网络方面,国家已投入大量的人力物力进行支持,普及性已比较高。同时,WIFI热点的布置已经相当容易,无线路由器等硬件的发展也比较成熟,在网络方面为我们的应用提供了必要的条件。
发明内容
本发明所要解决的技术问题是提供一种实实现Android手机语音对讲的方法,它解决了程控电话需要布置线路才能通话的问题。
为解决上述技术问题,本发明提供了一种实现Android手机语音对讲的方法包括:
在发送端手机,获取音频采样数据,将音频采样数据发送到服务端;
在服务端,建立接入端地址数据表,将接收的音频采样数据存入接入端地址数据表中,并将音频数据发送到接收端手机;
在接收端手机,对由服务端发送过来的音频数据进行解析播放;
通过多线程技术在手机端同时实现发送端与接收端的服务。
进一步的,所述在发送端手机,获取音频采样数据包括:在发送端手机,通过调用Android平台的多媒体组件AudioRecord,完成音频数据的捕捉。
进一步的,还包括:在发送端手机,设定音频的采样大小,并按设定的采样大小获取音频数据。
进一步的,所述在发送端手机,设定音频的采样大小,并按设定的采样大小获取音频数据包括:在发送端手机,通过Android平台的AudioRecord组件设定音频通道为CHANNEL_CONFIGURATION_MON,编码方式为ENCODING_PCM_16BIT后获得音频的采样大小,并按设定采样大小获取音频数据。
进一步的,所述在发送端手机,将音频采样数据发送到服务端包括:建立基于TCP协议的服务器,通过套接字将发送端手机取得的采样音频数据发送到服务端。
进一步的,所述在服务端,建立接入端地址数据表,将接收的音频采样数据存入接入端地址数据表中,并将音频数据发送到接收端手机,包括:在服务端内存中建立接入端地址数据表,将发送端手机的地址、接收端手机的地址存入接入端地址数据表中,通过比对服务器中发送端和接收端的地址识别出发送端手机,并将发送端手机的音频数据发送给接收端手机。
进一步的,所述在接收端手机,对由服务端发送过来的音频数据进行解析播放,包括:在接收端手机,首先构建AudioTrack组件,再构建音频解码缓冲区;当有音频数据由服务端推送过来时,将接收到的音频数据存入解码缓冲区,通过AudioTrack组件对缓冲区音频进行解码播放。
进一步的,在发送端手机,将音频采样数据发送到服务端后,判断音频数据是否采样完毕;
若没有采样完毕,则继续按设定的采样大小获取音频数据,并将音频采样数据发送到服务端;
若采样完毕,则停止采样。
进一步的,所述在服务端,建立接入端地址数据表,将接收的音频采样数据存入接入端地址数据表中,并将音频数据发送到接收端手机后,判断是否还有音频数据待转送到接收端手机;
若还有音频数据转送到接收端手机,则继续在接入端地址数据表中,通过比对服务器中发送端和接收端的地址识别出发送端手机,并将发送端手机的音频数据发送给接收端手机。
若没有音频数据转送到接收端手机,则终止转发数据。
进一步的,所述手机接收端对由服务端发送过来的音频数据进行解析播放后,判断是否中止接收;
若不中止接收数据,则继续将接收到的音频数据存入解码缓冲区,并通过AudioTrack组件对缓冲区音频进行解码播放;
若中止接收数据,则停止接收数据。
本发明的有益效果在于:
本发明实现了移动手机之间的非布线式的IP语音通话,可实现由手机语音采集端得到的语音数据到接收端手机的实时传送,并由接收端手机进行实时解码播放。通过多线程技术实现了手机端同时具有发送端与接收端的服务,从而实现了移动手机IP语音通话的双方互为发送端及接收端的双工对讲。
附图说明
图1为本发明实施例提供的实现Android手机语音对讲的方法的流程图。
图2为本发明实施例提供的实现Android手机语音对讲的方法的在发送端的流程图。
图3为本发明实施例提供的实现Android手机语音对讲的方法的在服务端的流程图。
图4为本发明实施例提供的实现Android手机语音对讲的方法的在接收端的流程图。
具体实施方式
为进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的实现Android手机语音对讲的方法的具体实施方式及原理进行详细说明。
由图1可知,本发明提供的实现Android手机语音对讲的方法,包括:
在发送端手机,获取音频采样数据;
在发送端手机,设定音频的采样大小,并按设定的采样大小获取音频数据;
在发送端手机,将音频采样数据实时发送到服务端;
在服务端,建立接入端地址数据表,将接收的音频采样数据存入接入端地址数据表中,并将音频数据实时发送到接收端手机;
在接收端手机,对由服务端发送过来的音频数据进行实时解析播放;
通过多线程技术在手机端同时实现发送端与接收端的服务。
由图2可知,在本发明提供的实现Android手机语音对讲的方法的发送端,先通过调用Android平台的多媒体组件AudioRecord,完成手机发送端音频数据的捕捉。再通过Android平台的AudioRecord组件设定音频通道为CHANNEL_CONFIGURATION_MON,编码方式为ENCODING_PCM_16BIT后获得音频的采样大小,按设定采样大小获取音频数据。接着建立基于TCP协议的服务器,通过套接字将发送端手机取得的采样音频数据实时发送到服务端。再判断音频数据是否采样完毕;
若没有采样完毕,则继续按设定的采样大小获取音频数据,并将音频采样数据实时发送到服务端;
若采样完毕,则停止采样。
这样能通过连续不断的对发送端MIC的音频采样将发送端的音频数据实时发送给服务端,从而生成实时流畅的音频数据流。
由图3可知,在本发明提供的实现Android手机语音对讲的方法的服务端,在服务端内存中建立接入端地址数据表,将发送端手机的地址、接收端手机的地址存入接入端地址数据表中,通过比对服务器中发送端和接收端的地址识别出发送端手机,并将发送端手机的音频数据实时发送给接收端手机;接着建立基于TCP协议的服务器,通过套接字将音频数据实时发送给接收端手机。再判断是否还有音频数据待转送到接收端手机;
若还有音频数据转送到接收端手机,则继续在接入端地址数据表中,通过比对服务器中发送端和接收端的地址识别出发送端手机,并将发送端手机的音频数据实时发送给接收端手机;接着建立基于TCP协议的服务器,通过套接字将音频数据实时发送给接收端手机;
若没有音频数据转送到接收端手机,则终止转发数据。
这样就能连续不断的将发送端的IP音频数据转送到接收端。
由图4可知,在本发明提供的实现Android手机语音对讲的方法的接收端,首先构建AudioTrack组件,再构建音频解码缓冲区;当有音频数据由服务端推送过来时,将接收到的音频数据存入解码缓冲区,通过AudioTrack组件对缓冲区音频进行解码播放。再判断是否中止接收;
若不中止接收数据,则继续将接收到的音频数据存入解码缓冲区,并通过AudioTrack组件对缓冲区音频进行解码播放;
若中止接收数据,则停止接收数据。
这样在没有中止接收处理之前会不断将由服务器端推送过来的实时音频数据进行解码播放处理,从而能在接收端听到发送端的实时语音了。
利用本发明提供的实现Android手机语音对讲的方法实现手机A与手机B之间的对讲,本实施例中,手机A和手机B均为基于Android系统的手机。当手机A向手机B通话时,先通过手机A的多媒体组件AudioRecord,完成手机A的音频数据的捕捉,再通过手机A的AudioRecord组件设定音频通道为CHANNEL_CONFIGURATION_MON,编码方式为ENCODING_PCM_16BIT后获得音频的采样大小,按设定采样大小获取音频数据。接着建立基于TCP协议的服务器,通过套接字将手机A取得的采样音频数据实时发送到服务端。在服务端内存中建立接入端地址数据表,将手机A的地址、手机B的地址均存入接入端地址数据表中,通过比对手机A和手机B的地址信息得出手机A为发送端手机,并将手机A的音频数据实时转发给手机B。手机B将接收到的音频数据存入解码缓冲区,通过AudioTrack组件对缓冲区音频进行解码播放。从而实现了手机A到手机B的通话。
当手机B向手机A回话时,在另一个线程中,先通过手机B的多媒体组件AudioRecord,完成手机B的音频数据的捕捉,再通过手机B的AudioRecord组件设定音频通道为CHANNEL_CONFIGURATION_MON,编码方式为ENCODING_PCM_16BIT后获得音频的采样大小,按设定采样大小获取音频数据。接着建立基于TCP协议的服务器,通过套接字将手机B取得的采样音频数据实时发送给服务端。在接入端地址数据表中,通过比对手机A和手机B的地址信息得出手机B为发送端手机,并将手机B的音频数据实时转发给手机A。手机A将接收到的音频数据存入解码缓冲区,通过AudioTrack组件对缓冲区音频进行解码播放。从而实现了手机B到手机A的通话,即实现了手机A与手机B的双工对讲。
本发明实现了Android手机之间的非布线式的IP语音通话,可实现由手机语音采集端AudioRecord组件得到的语音数据到接收端的实时传送,并由接收端手机通过AudioTrack组件进行实时解码播放。通过多线程技术实现了手机端同时具有发送端与接收端的服务,从而实现了移动手机IP语音通话的双方互为发送端及接收端的双工对讲。
最后所应说明的是,以上具体实施方式仅用以说明本发明的技术方案而非限制,尽管参照实例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。