SipDroid开源软件的研究

1、开发环境的配置

下载下来SipDroid源代码后,不能直接导入到eclipse中,否则是无法使用和编译的。

首先需要通过command line参照工程目录下的BUILT.txt文件对工程进行update。

如:android update project -p . -t 2(这里 -p指的是 --path -t指的是 --target)

由于是开源软件,需要版本控制的服务器,可以安装Subclipse(可以参见官网)

这样就可以将工程import到eclipse中了。

2、下面是我最近收集整理的一些Android视频通话技术开发的资料:

目前市场上在Android手机上支持视频通过并且已经实现的软件有:

SipDroid、Qik、FringforAndroid.

(最近Skype公司透露也将开发Android上的视频通话软件:

http://www.opda.cn/2010/05/30/skype-mobile-coming-to-android-this-year-possibly-with-video-calling/

下面是一些网页链接(有的包含视频通话的演示)

Qik:http://www.pin5i.com/showtopic-android-use-qik-for-video-chat.html

FringforAndroid:

http://bbs.goapk.com/viewthread.php?tid=8887&extra=page%253D1%2526amp%3Borderby%253Ddateline%2526amp%3Bfilter%253D2592000

http://v.youku.com/v_show/id_XMTc2OTgxMTA4.html

SipDroid:(国外已经实现的SipDroid视频通话)

http://v.youku.com/v_show/id_XMTc3MTIzNjY0.html

在上面三个软件中:SipDroid为开源软件项目FringforAndroid为免费但是不开源Qik是收费的

从通话质量来说:SipDroid比FringforAndroid要好。

下面就最有前途的SipDroid的简单介绍:

SipDroid是一款开源的SIP/Voip客户端软件,针对Android手机开发平台。

它是通过SIPprovider来提供电话通信服务的,在它的最新的版本1.5.5beta中也提供了视频通话的服务。

它运行在标准的SIP协议之上,由于Android内核本身没有提供SIP协议栈,所以SipDroid软件中通过JNI直接实现了SIP协议栈。

它能够在如下一些网络中提供VoiP服务:WLAN、3G、EDGE网络。甚至能够和Skype、GoogleTalk,MSN,Yahoo,AIM,andICQ等用户进行通话。但前提必须到一些SIPprovider注册账号(有免费的,也有收费的),SipDroid强烈建议使用PBXes这个sipprovider来得到服务。

有关支持视频通话主要的特新如下:

Whattypesofvideocallsaresupported?

Therearethreelevelsofoperationforvideocalls.

Sending

BypressingtheMENUbuttonandchoosing"SendVideo"youcanstartvideotransmissiontoaSIPphonewithvideo.

Receiving

Thisisnotsupportednatively.IfyouareregisteredtoPBXesandtheotherpartystartssendingvideoitwillshowupontheAndroidphone.

Streaming

Whenyoustartsendingvideoasdescribedabovewhileyouareinacalltoaregularphone,andyouhaveaPBXesPremiumAccount,theotherpartycanopenyourwebcallURL,clickonyourphotoandseeyourvideo.

StreamingcanalsobeusedifyoucallsomebodyonhisAndroidphonewhoisnotregisteredtoPBXes.ThenhecanstillopenyourwebcallURLfromhismobilebrowserandseeyou.

SipDroid只要支持的特点和功能如下:

·Changenumberformat(e.g.convertthe+codes)

·Musiconhold

·SupportofseveralmodesforDTMFtones

·SupportforNAT(networkaddresstranslation)

·SimultaneousOutboundCalling

·Screeninganonymouscallers

·Time-basedroutingforincomingcalls

·AttendedCallTransfer

·Conferences

·VideoReception(VideoTransmissionissupportedbySipdroidnatively)

·Triggercallbackorcallthru(ifnosuitabledatanetworkavailable)

·CallstoSkypeusers

详细的SipDroid开源软件的介绍见官网:

http://code.google.com/p/sipdroid/(可能需要访问)

对于SipDroid实现视频通话的原理,我目前的理解是:

发送方是将是将视频数据传输到视频流媒体服务器,然后再传输给接收方的。具体细节目前不是很清楚,因为涉及到许多通信协议。

SipDroid的源代码可以在官网下载:大概有几M的样子。

开发环境需要Eclipse和subclipse(SVN客户端)插件。

Subclipse的官网:http://subclipse.tigris.org/servlets/ProjectProcess?pageID=p4wYuA

下面是一些参考链接:

SIP:http://baike.baidu.com/view/51013.htm

PBXes:http://baike.baidu.com/view/2380496.htm

PBXes官网:https://www1.pbxes.com/index_e.php(需要)

Edge网络:http://baike.baidu.com/view/84625.htm?fr=ala0_1

3、Sipdroid源代码分析之org.sipdroid.sipua.phone

这个包的核心功能是提供拨打语音电话,同时附加有来电显示,通话历史记录,

ButtonGridLayout.java

这个类主要的作用是设置显示的格式,它继承于父类:ViewGroup。

Call.java

这个类主要提供手机通话状态的信息。它会与Connection类产生交互,因为在Connection类型会判断当前通话的状态是什么。

CallCard.java

这个类一开始以为是与Card相关的类,其实它本质上就是一个提供UI element的类,它会在通话开始到结束的整个过程中显示不同的界面变化。 是一个非常庞大的类,其中提供了很多的调试函数,看了以后,对Android大程序如何调试会有进一步的认识。

CallInfo.java

这个类用于对于给定的电话号码,查找出拨号人的信息,因此这个类会与Contacts后台的数据库会发生交互。

Connection.java

这个类提供关于通话连接信息,同时会对每一次的通过连接进行历史记录。

Phone.java

这是一个接口类,提供了一些手机状态信息。

你可能感兴趣的:(开源软件)