语音聊天室的实例介绍
有了以上的基本的介绍,我就可以通过对我写的一个极为简单的语音对讲软件代码的解释让大家更清楚地了解一下这几个模块的具体使用方法,大家可以从中获得开发具有诸如网络电话、自动应答等功能的软件的类似方法,用于语音数据的传输。 整个程序分三层,作用分别如下:
. 顶层: 用户界面
. 中间层: 控制层
. 底层: 传输层
程序有两个主要的类: (表) CallLink 网络传输层,用于接收或发送音频数据。
VoiceSender 作为第二个启动的线程提供从音频硬件捕获并编码好的数据给网络传输层。
程序的主类jphone使用了Runnable和ActionListener接口,主类除了基本的几个方法之外,还具有方法initAudioHardware()、ShowMSG、startPhone分别用于初始化AudioCapture类与AudioPlayStream类、显示程序状态和开始程序。主类jphone具有两个子类VoiceSender和CallLink。
子类VoiceSender同样使用了Runnable接口,它在程序中作为第二个启动的线程负责发送捕获到的音频数据。CallLink子类就是负责建立scoket连接,并且负责接收或发送网络数据、监听网络连接等功能的实现。它具有主要的方法是getInputStream()、getOutputStream()、listen()、open()、close()等。
为了让大家更清楚的了解程序的结构请大家看下面的类图。