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://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.
BypressingtheMENUbuttonandchoosing"SendVideo"youcanstartvideotransmissiontoaSIPphonewithvideo.
Thisisnotsupportednatively.IfyouareregisteredtoPBXesandtheotherpartystartssendingvideoitwillshowupontheAndroidphone.
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
这是一个接口类,提供了一些手机状态信息。