VoIP模拟手机系统的常用功能网络电话设计(4)_毕业论文

毕业论文移动版

毕业论文 > 计算机论文 >

VoIP模拟手机系统的常用功能网络电话设计(4)


4  系统设计4.1系统结构图 图 4.1  手机系统结构图
4.2 状态切换图来电提示 图 4.2  手机系统状态切换图
4.3  数据库设计
   本系统分为客户端和服务器端,其中客户端有四张表,分别为短信,闹钟,通话,通讯录。
   短信表记录短信内容,发件人号码,发件时间,短信类型(收件,发件,草稿)
        图 4.3  手机系统数据库短信表结构
   闹钟表记录设定闹钟时间 图 4.4  手机系统数据库闹钟表结构
   通话表记录对方号码,通话起始时间,通话的类型(来电,去电,未接来电)
 图 4.5  手机系统数据库通话表结构
   通讯录表记录联系人姓名,联系人号码
               图 4.6  手机系统数据库通讯录表结构
   服务器端有一张表,记录用户地址,以及用户状态(开机,关机,通话中)
 图 4.3  手机系统服务器数据库用户表结构
5  关键技术
5.1  VoIP的实现
5.1.1 音频压缩及音频压缩管理控件    
    我们基于Delphi平台,利用pscal语言编程实现语音数据的编码解码。Codes是音频压缩解码编码器,它提供对媒体格式的进行转换的功能,windows带有其相应的动态库,其相应的调用功能接口函数库ACM(Audio Compression Manager)提供了给用户对媒体格式进行转换的快捷工具,在Delphi7开发音频压缩程序中,其相应的API声明单元为MSASM.pas。语音压缩程序中,音频压缩管理器控件组包括TACMWaveIn,TACMDialog,TACMWaveOut这三个控件。程序员可以从相应的技术网站上获得这些控件。TACMDialog该控件可以用来指定音频数据的输入输出格式,用户既可在设计过程中设定音频数据的输入输出格式,也可在程序运行时由对话框调整这些参数。TACMWaveIn控件用于从麦克风接受音频数据,TACMWaveOut控件用于声音的回放,这个控件的音频数据缓冲区大小属性Numbuffers用于指定播放前使用缓冲区数,这对流量不稳定的网络音频传输显得非常重要,它可以缓冲连接的波动数据而输出稳定不间断的声音。
5.1.2 用户数据报文控件NMUDP实现语音数据的传输
     用户数据报文协议(UDP)于TCP不用,它作为一个无连接的协议,只是简单的将数据放在端口中,不在发送和接受方建立一个连接。这种数据传输方式的安全性较差一些,但程序运行过程的鲁棒性要强许多,这里使用的NMUDP控件来传输音频数据或文字信息,发送报文任务由sendbuffer方法或者sendstream完成,它负责完成由TACMWaveIn控件获得的并经控件转换的压缩音频数据的发送。而它在接受到一个报文时,将触发DataReceive事件,在此事件函数中,调用Readbuffer或者ReadStream来读取报文的数据,并将这些数据经解压后由TACMWaveOut控件加以播放。
TACMWaveIn控件的ondata事件,是当数据满了就会发生这个事件。在这个事件里调用NMUDP控件的Sendstream方法把数据发送出去。NMUDP控件的 DataReceive事件,是当数据到达时就会发生。在这个事件里调用TACMWaveOut.play(buf,size)播放语音流。
5.2  控件大小的动态调整
为了使控件的大小和布局随着窗体的缩放而做出动态的调整,整个界面设置控件的各种属性。由于单行文本框,下拉表的高度是固定的,上述设定不能对它们进行纵向拉伸,需要在窗口大小变化时提供额外的逻辑来修正这些控件的间距。
5.3  控件大小的动态生成
因为客户端很多功能共用一个窗体,模拟手机的各个动作控件同时呈现在窗体上是不现实的。程序运行时会根据当前的系统状态对无效的控件进行替换,动态设置其外观并绑定合适的事件处理程序,保证界面不会被一大堆控件弄的拥挤不堪。 (责任编辑:qin)