SipDroid开源软件的研究

原文链接:http://blog.csdn.net/urecvbnkuhbh_54245df/article/details/5799864

 

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、Fring for Android.

(最近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

 

Fring for Android:

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为开源软件项目 Fring for Android为免费但是不开源 Qik是收费的

从通话质量来说:SipDroid比Fring for Android要好。

 

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

 

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

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

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

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

 

 

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

What types of video calls are supported?

There are three levels of operation for video calls.

Sending

By pressing the MENU button and choosing "Send Video" you can start video transmission to a SIP phone with video.

Receiving

This is not supported natively. If you are registered to PBXes and the other party starts sending video it will show up on the Android phone.

Streaming

When you start sending video as described above while you are in a call to a regular phone, and you have a PBXes Premium Account, the other party can open your webcall URL, click on your photo and see your video.

Streaming can also be used if you call somebody on his Android phone who is not registered to PBXes. Then he can still open your webcall URL from his mobile browser and see you.

 

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

· Change number format (e.g. convert the + codes)

· Music on hold

· Support of several modes for DTMF tones

· Support for NAT (network address translation)

· Simultaneous Outbound Calling

· Screening anonymous callers

· Time-based routing for incoming calls

· Attended Call Transfer

· Conferences

· Video Reception (Video Transmission is supported by Sipdroid natively)

· Trigger callback or callthru (if no suitable data network available)

· Calls to Skype users

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

 

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

 

对于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(需要FQ)

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

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

posted @ 2015-10-27 16:10  Flyoung  阅读(414)  评论(0编辑  收藏  举报