别的wwW44www.ngng.com360咋找不到44www.ngng.com360com可以正常收视的地了

NGN问答整理
来源:& 作者:TonyPu
转自 cisco.com
提问内容: 您好!如果NGN能够最终代替PSTN的话,那从ISP的角度来看,虽然最终得益的会是用户,但ISP的营运收入可能减少,例如,他们需要投资CN2作为NGN的业务承载网,并且可能占ISP可观收入的PSTN业务会减少。那从语音业务层面来讲,NGN会与当前同属于一个ISP的业务有冲突,而且DSL也承载在传统PSTN上。我想请教几个问题:a. 从经济角度考虑,NGN有哪些方面的说服力可以让ISP接受呢?主要是ISP可以从NGN中开展什么新业务来回拢投资呢?b. 因为我的理解是目前的PSTN功能是未来NGN的一个子集,从PSTN向NGN的迁移应该遵循什么策略呢?c. NGN/3G与IPV6的关系是否非常密切呢?即目前的IPV4不能满足NGN/3G的部署呢还是要先有IPV6的平台才能扩展NGN/3G的业务呢?非常感谢!
回答者:HeGang_Cisco回答内容: 您好!首先可以肯定的是,只有当SP也是NGN的受益者时NGN才会出现。对于SP来说,NGN的出现一定是有得有失的权衡,当利大于弊时SP就开始了NGN的建设。a. 从经济角度来考虑,可以分为以下多个层面:建设成本、运维成本、业务开发成本、业务收入、未来预期及损耗成本等。毫无疑问NGN的建设需要额外的投入,但是首先它大大降低了运维成本,这体现在网络的融合(如软交换方案)、业务的融合(如IMS方案)、数据库的融合等多个层面。这从已经完成网络融合的运营商如意大利电信等的经营状况可以看出非常明显的效果。其次NGN的新业务开发成本低于PSTN的开发成本,尤其是对IMS的体系结构来说,因为业务与控制分离,使得新业务的引入非常快捷;还有在语音业务收入迅速下滑,而且趋势不可逆转的前提下,NGN(尤其是基于IMS的NGN)带来了新的业务增长点,如FMC、综合信息服务、多媒体业务、与IM/Presence结合的下一代通信模式等等。另外网络的建设是否符合未来演进的需要,或者说尽量延长网络及设备的有效寿命,也是SP非常重视的问题。b. PSTN向NGN的演进一定是多种方式的,不同的SP、不同的地域、不同的时间可能采取的策略都不相同,而且有技术上、商务上、管理上的不同。仅仅从技术上来说,就有很多的迁移策略如有演进式和革命式,例如软交换方式、IMS方式,以及PES和PSS方案(Emulation和Simulation)。PES要求尽量模拟现有所有的PSTN业务为主,并提供一定的下一代多媒体业务;PSS要求仿真必须保留的部分PSTN业务,以提供下一代多媒体业务为主。总之演进的策略是多层面、多方式、分阶段的。c.NGN/3G与IPv6的关系是密切的,但是在初期完全可以采用IPv4来实现。以下引用3GPP的理念来回答您的这个问题:3GPP强调IPv6主要针对IMS,对于CS和PS域,“IP transport between network elements of the IP Connectivity services (between RNC, SGSN and GGSN) and IP transport for the CS Domain: both IPv4 and IPv6 are options for IP Connectivity” 对于IMS来说,- The architecture shall make optimum use of IPv6.- 3GPP design the IMS elements and interfaces to exclusively support IPv6. However, early IMS implementations and deployments may use IPv4- 3GPP design the UE to exclusively support IPv6 for the connection to the IMS. However, UEs may in addition support IPv4, which allows for the connection to early IMS implementations that use IPv4 only 另外在IMS中采用IPv4时,应遵循3GPP TS23.981的建议。
提问内容: 请问ip下一代网络,会给运行商带来什么样的技术变革?网络接入方式会和现在不同吗?谢谢您的指点
回答者:HeGang_Cisco回答时间: 16:37:03回答内容: 所谓下一代网(NGN)是在网络业务量和电信外部环境几乎同时发生巨大变化的前提下,电信业试图利用最新技术发展成果适应发展、变革和竞争需要而提出的下一步网络发展的总体设想和思路,迄今并没有什么严格的定义。通常NGN泛指一个不同于目前一代的,大量采用创新技术,以IP为中心同时可以支持语声、数据和多媒体业务的融合网络。一方面,NGN不是现有电信网和IP网的简单延伸和叠加,也不是单项节点技术和网络技术,而是整个网络框架的变革,是一种整体解决方案。IP下一代网络涵盖了几大技术变革趋势,向多元化的无缝宽带接入网演进、向以IPv6为基础的下一代互联网演进、向以IMS为核心的下一代业务控制网演进,以及几个战略性发展趋势:交换技术将从电路交换向分组交换的转变、窄带接入将从铜线接入向移动接入的转变、有线无线接入都将从窄带向宽带的转变。所以IP下一代网络所带来的变革是多个层面的,包括核心承载网、核心控制网、核心业务网、边缘接入网。在下一代网络中,网络安全性、服务质量、流量控制、内容和流的识别及计费、身份认证、移动性等能力都有显著的提高。网络接入方式仍然是多样化的,包括以太网、Cable、WiFi、3G、xDSL、光纤到楼/户等等,但它们体系了统一的演进趋势:宽带化和移动化。
提问内容: 您好!我想知道如果未来使用NGN网络的话,是不是可以完全代替现在的PSTN的网络呢?是不是讲以后使用NGN的话,打电话全部基于软交换规则交换IP信令跑VOIP了,而没有任何的PSTN模拟信令在跑了?另外一个问题是:我想知道3G和NGN的关系,是不是以后3G是基于无线移动的IP网,然后NGN是基于有线的IP网,这样两张网有什么关系会融合起来么?业务层面有重叠么?谢谢!
回答者:WuYiSheng_Cisco回答内容: 1) NGN 是一个全业务网的模型,当然现在的PSTN 将逐渐被替换掉。但是在新旧更替的过程中,PSTN 的部分东西还将有所延续。2) 如果你这里的NGN 只是指固定电话的软交换系统,那么可以说3G 和NGN 最大的区别是在接入网上 , 因为3G 涉及到无线的接入系统。当然如果技术发展足够好,3G 和这里的狭义NGN 甚至可以共用核心承载网和信令网。至少我个人这样认为。
提问内容: 目前NGN是否华为和中兴掌握一定的核心技术和专利,这样将有利于中国网络通信在世界的竞争格局?
回答者:WuYiSheng_Cisco回答内容: 就我所能认知的范围内:1) 单纯的看NGN, 那是一个网络框架结构的标准。是大家要遵守的东西。这里面是没有专利的。2) 细化到某个技术层面,比如创新的CDMA编码方式。比如创新的芯片处理技术等等,这些是涉及到大量的专利。所谓的核心技术,我个人认为主要体现在两个方面:1) 高端的芯片设计和制造2) 先进的技术模型 (像高通的CDMA 理论,等等)具体华为和中兴掌握多少真正的核心技术,我并不知道。但我还是希望这两家公司能够在这个领域取得领先的地位,为中华民族争光
问题主题:MPLS VPN网络中关于ISIS路由协议的问题提问者:xuhaifeng提问内容: 专家你好,我最近做工程时候遇到一个问题,一直没有搞明白,特向你请教。整个网络情况如下:网络分为三层,核心用的是cisco7513,汇聚用的是cisco7507,接入用的是cisco3725,启用isis+MBGP路由协议,整个网络传输二个VPN业务。原先我们的设想是cisco7513和cisco7507属于ISIS路由协议的level-2,cisco7507和cisco3725属于ISIS路由协议的level-1,即cisco7507处于level-1-2。在配置上,cisco7507上连口和cisco7513下连口我们没有对他进行任何配置,属于默认的level-1-2,而cisco7507下连口和cisco3725的上连口上我们配置了isis circuit-type level-1命令,这样察看BGP的neighbor也建立起来,可是就是从cisco3725ping不通cisco7513,察看cisco3725ISIS路由协议也没有学到cisco7513的路由信息。当我们把该命令去调后,让所有的路由器都处于level-1-2中,一切都正常,可这样就违背了我们原先网络的分层设计,没有减少接入层cisco3725学到的level-2的路由。记得ISIS路由协议处于level-1的设备应该能向它最近的level-1-2设备转发数据的啊,麻烦解释一下,谢谢。
回答者:WuYiSheng_Cisco回答内容: http://www.cisco.com/univercd/cc/td/doc/product/software/ios122/122cgcr/fipr_c/ipcprt2/1cfisis.htm#wp1000902可能你再校对一下配置?根据上面链接的说明?好像配IS level 的命令不是isis circuit-typ 吧?is-type {level-1 | level-1-2 | level-2-only} Configures the routing level for an instance of the IS-IS routing process提问内容: NGN是否可以理解为好多接入设备通过软件集成在一起的综合接入设备
回答者:WuYiSheng_Cisco回答内容: 不可以。NGN 是指下一代网络的构架。是指整个网络。它涵盖的面远不只一个接入。对电信来讲,它包括整个电信的应用系统。当然,在这个网络里面,有一个比较重要的节点,我们希望它能做“综合业务控制”。: )
提问内容: 您好,我的第一个问题是请您介绍一下MPLS TE中约束路由算法的研究现状?第二个问题是若今后欲在国内MPLS相关领域从事一些工作,应主要从哪些方面着手?哪些方面的发展较有实际的应用价值?谢谢
回答者:WuYiSheng_Cisco回答内容: MPLS TE 的约束算法 一般可以考虑 带宽、Color、节点 等很多因素。具体你可以参考IOS configuration guide 里面的RSVP 的约束条件。目前业界在MPLS 上的研究有很多的方向,这个你可以在IETF 的MPLS work group 里面看到有很多的研究文档。我个人目前比较感兴趣的大概是 Multicast LSP 和RSVP LSP 嵌套 的想法。这个在实际的网络应用中比较有用的。
提问内容: 你好,我用Metro3750做MPLS/VPN网络的PE设备,原来没有用过这个设备,请问有没有相关的技术资料,有什么需要注意的,谢谢!
回答者:WuYiSheng_Cisco回答内容: 你可以到下面的link 去看configure guidehttp://www.cisco.com/en/US/partner/products/hw/switches/ps5023/products_installation_and_configuration_guides_list.html在这个Link 下面有restriction & release notes 的说明http://www.cisco.com/en/US/partner/products/hw/switches/ps5023/tsd_products_support_series_home.html
提问内容: CISCO在NGN方面,目前可以提供什么样的方案及设备?
回答者:HeGang_Cisco回答内容: NGN涵盖的范围非常广,涉及到骨干网、城域网、有线和无线接入网、用户驻地网到各种业务网的所有层面,从网络层次上讲包括NGN传送层面、NGN承载层面、NGN控制层面、NGN业务层面。从业务层面来说,思科的IMS解决方案提供NGN的多媒体解决方案,包括PushToTalk、Presence、IMS Messaging业务等;相关的产品有Cisco Presence Engine、Application Server等。从控制层面来说,思科的IMS解决方案、软交换解决方案、PacketCable解决方案提供多媒体session control功能,相关产品有IMS P-CSCF, I-CSCF, S-CSCF;两款软交换设备BTS(面向市话和PacketCable业务)和PGW(面向长途业务);统一消息Unity产品,以及多种媒体网关设备MGW8000系列、AS5000系列。从承载层面来说,思科有面向下一代网的IPv6解决方案、业务控制解决方案、安全解决方案等,涉及的产品包括面向下一代网络的SCE产品,CMX产品,以及安全产品等。
提问内容: 在下一代网络中,将如何实现对组播性能的评估与管理?
回答者:WuYiSheng_Cisco回答内容: 组播是个很大范围的题目,粗粗地看,就涉及到IPv4 的组播,IPv6 的组播,MPLS 的组播,等等。我在这里就组播的性能考虑做一个简单的介绍,至于组播的管理可能要花更大的篇幅来说明。推荐你看一下networkers 2005 中关于Multicast 的文章。在做设备硬体设计的时候,基本上要考虑如下几个对组播性能影响比较大的地方:1) 组播路由查找的性能(因为组播路由查找要比IP路由查找至少复杂一倍)2) Ingress Copy & Egress Copy & Fabric Copy : 这些function 可以很大程度地影响到组播对整个设备的吞吐量3) Egress Copy 的实现机制,由转发引擎copy , 还是Buffer ASIC copy. 这个实现的区别可以直接影响到能否实现per egress copy 的QoS 控制。
提问内容: 2位专家你好,我们man中现在 使用的路由器有gar 12016、cisco 12416 and 12816使用IOS版本为,c12kprp-k3p-mz.120-28.S3 ,使用ospf路由,关于ospf最近出了一些莫名其妙的问题?针对这两款路由器,请专家推荐一个比较稳定的ios 版本。谢谢!!
回答者:WuYiSheng_Cisco回答时间: 21:40:49回答内容: 如果是OSPF 的IGP 出现问题,最好是查清楚到底是什么原因。比如:是收到什么样类型的错误的LSA 导致OSPF 进程崩溃。等等。据我所知,在IOS 的运行环境中,实际上还和你安装的具体的板卡引擎类型有关系。所以这种涉及到具体售后的问题,还是请教Cisco 专门负责售后的工程师。他们应该有更专业的回答。问题主题:能不能介绍一下下一代网络都有哪些新东西?
回答者:HeGang_Cisco回答内容: 总体来说,下一代网络是基于分组技术的网络,能够提供包括电信业务在内的多种业务;能够利用多种宽带和具有QoS支持能力的传送技术;其业务相关功能与底层传送相关技术相互独立;能够让用户自由接入不同的业务提供商;能够支持通用移动性,从而向用户提供一致的和无处不在的业务。因此下一代网络涉及了骨干网、城域网、有线和无线接入网、用户驻地网到各种业务网的所有层面。从业务网层面而言,则下一代网指下一代业务网;从接入网层面而言,则下一代网指各种宽带接入网;从传送网层面而言,则下一代网往往指下一代智能光传送网;从控制层面而言,则下一代网通常指基于IMS的下一代控制网络。下一代网络涵盖了几大技术方向:向多元化的无缝宽带接入网演进;向以光联网为基础的下一代传送网演进;向以IPv6为基础的下一代互联网演进;向以3G/B3G为代表的下一代移动通信网演进;向以IMS为核心的下一代业务控制网演进;向统一的用户数据库、统一的网管计费平台的下一代管理网演进。目前看来下一代网络有以下几个发展趋势:即交换技术将从电路交换向分组交换的转变;窄带接入将从铜线接入向移动接入的转变;传送技术将从点到点通信向光联网的转变;有线无线接入都将从窄带向宽带的转变。目前3GPP、ITU、ETSI、IETF分别对下一代网络进行了相关的研究和标准制定,其中3GPP的IMS体系架构提供了完整的下一代全IP多媒体网络的技术体系架构,包括业务控制、接入方式、服务质量、计费、安全、网管、移动性及互联互通等各个领域;ETSI则基于3GPP IMS体系架构提出了TISPAN体系架构,并增加了固网接入方式和PES/PSS能力等等;ITU也成立了FGNGN工作组,进行与ETSI TISPAN类似的研究;而IETF则为几个标准组织输送具体的协议。总之下一代网络涵盖了传送层面、网络层面、控制层面、业务层面,以及有线和无线接入网、核心网等多个层面,在每一个层面上都有新的技术进展。
提问内容: 您好,我的问题是您对下一代网络中MPLS的应用前景如何看待?谢谢
回答者:HeGang_Cisco回答时间: 18:39:44回答内容: MPLS技术是目前网络界最热门、发展最快的技术之一,是一种利用数据标签引导数据包在开放的通信网络上高速、高效传输的新技术。它在一个无连接的网络中引入连接模式从而兼顾了IP技术与ATM技术的优点,将IP路由控制和第二层交换的简单性无缝地集成起来,提供高速、安全、多业务统一的网络平台,并且兼容现有各种主流网络技术,在提高IP业务性能的同时,能确保网络通信的服务质量和数据传输的安全性。因此毫无疑问MPLS技术将成为下一代网络中最重要的核心网承载技术,目前还没有其它一种技术可以取代它的地位。当然MPLS技术也是在不断的发展和完善之中,以满足业界对网管、跨域运营、扩展性、服务质量等方面的要求。目前其技术标准在IETF就有MPLS工作组、PWE3工作组、TE工作组、L2VPN工作组、L3VPN工作组、CCAMP工作组、PCE工作组和BFD工作组分别进行不同领域的发展和完善,在每个工作组目前都有若干个技术草案,分别对应MPLS的网管、虚电路、MPLS TE、2层VPN、3层VPN、通用控制和测量平面、PCE路径计算、双向转发检测等技术。此外ITU的SG13(Q5 MPLS的网管、Q7 MPLS的互通、Q12帧中继与MPLS互通)、SG12(Q17 IP和MPLS的性能管理)、SG15(Q11 MPLS作为传送平台、Q9和Q12 MPLS的特征)也都在对MPLS技术进行进一步的发展和规范。MFA技术论坛目前也在进行几个领域的研究如MPLS NNI OAM、运营商之间的MPLS接口、故障网络的互通性、2层业务适配等等。随着市场需求和技术标准的不断发展,今天的MPLS技术已经比90年代末MPLS刚刚提出来时有了很大的改善,而且随着目前的这些MPLS技术草案逐渐颁布实施,未来的MPLS技术还会有进一步的发展。我们有理由相信,不断完善的MPLS技术在下一代网络中的核心网承载技术中将扮演最重要的角色。
提问内容: NGN承载网内部由4台路由器,4台pix535,4台三层交换机组成双网双平面,采用ospf协议。各地承载网互联通过CN2,请问对接用ospf还是EBGP比较合理?另外535位于路由器与三层交换机之间,三层交换机接有tg,sg,ss1b,shlr,路由器接有mg,请问在pix535上启用三层模式还是二层模式的好?启三层的话,用ospf还是静态路由的好?谢谢!
回答者:WuYiSheng_Cisco回答内容: CN2会给VPN 接口到NGN 承载网的本地路由器吧?如果你把路由策略的控制点放在CN2 的路由器上,那么直接OSPF 就可以了,IGP的收敛速度还快一点。如果NGN网的路由策略需要在本地的路由器上做,那么需要用BGP 去和CN2 的PE 设备进行对接;上述描述只是针对一般情况而言。不涉及特殊的需求。关于放火墙的问题,本人不是很懂。对我来讲,更看重的是放火墙在各种工作模型下,对性能和QoS 的影响。如果是L3 层,如果PIX 的OSPF 的Code 没问题的话,建议用OSPF 。否则还是static 比较安全一点。
相关新闻 & & &
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款douban.com, all rights reserved 北京豆网科技有限公司android-NGN-stack中文文档
时间: 11:52:23
&&&& 阅读:1194
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&
android-ngn-stack是android2.x(或更高版本)NGN(下一代网络)软件栈。ngn基于doubango框架。doubango是目前世界上最先进的开源3GPP IMS/RCS嵌入式和桌面系统架构。其主要目的就是提供一个开放源码为开发者构建自己的VoIP应用。这一框架提供了一组独特的特征,从音频/视频呼叫,内容共享,消息,会议增强通信社交存在。所有这些功能都是按照GMSA RCS,3GPP IMS或VoLTE标准实施。
该文档由(Doubango电信)提供,以帮助开发人员快速构建新的android多媒体应用。如果你是一名开发人员,正在寻找开发NGN(网络电话,消息,视频会议,…)或丰富的android应用程序那么你选对地方了。如果你想获得帮助,或者想给我们一些反馈,那么请访问我们的网站
Doubango解决方案
android-ngn-stack是Doubango的解决方案,其中包括许多组件等部分;
1、 Boghe:IMS/RCS Windows客户端
2、 IMSDroid:Android版IMS/RCS客户端采用android-ngn-stack
3、iDoubs:IOS(iPhone,iPad和iPod Touch)版IMS/RCS客户端
4、OpenVCS:OpenVCS代表开源视频会议服务器和用于管理多点控制单元(MCU)。每个MCU(又称桥接器)最多可处理64个参与者
5、Flash2IMS:Adobe? 闪存SIP/IMS网管
亮点(支持特征):
6、SIP(RFC 3261,3GPP TS 24.229 Rel-9)
7、TCP和UDP IPv4或IPv6
8、信号压缩,SigComp(RFC,,,和1951)
9、加强版通讯录(XCAP存储,授权,presence)
10、发布第三版GSMA富通信套件
11、部分支持声音档案V1.0.0(GSMA VoLTE)
12、部分支持MMTEL UNI(GSMA RCS和GSMA VoLTE)
13、基本的IMS-AKA的注册(包括AKA-V1和AKA-V2),MD5
14、3GPP IMS早期安全性(3GPP TS33.978)
15、Proxy-CSCF使用DNS NAPTR+SRV
16、3GPP对SIP私有头(Headers)扩展
18、服务路由(Service Route discovery)
19、订阅注册事件包(履行网络发起(re/de/un)注册(registration)事件)
20、3GPP SMS IP(3GPP TS23.038,24.040,24.011,24.431和24.451)
21、语音呼叫(G729AB1, AMR-NB, iLBC, GSM, PCMA, PCMU, Speex-NB)
22、视频呼叫((H264, MP4V-ES, Theora, H.263, H.263-1998, H.261)
23、DTMF (RFC 4733)
24、使用前提QoS协商(RFC
25、SIP会话计时器(RFC4028)
26、临时响应确认( Provisional Response Acknowledgments)(PRACK)
27、保持通信(3GPP TS 24.610)
28、消息等待提示(3GPP TS 24.606)
29、使用ENUM协议调用E.164号码(RFC3761)
30、NAT穿越使用STUN2(RFC5389)与可能性自动发现服务器
      通过使用DNS SRV(TURN已经实现,ICE正在测试)
31、一对一和群聊
32、文件传输和内容共享
建立NGN项目
这部分内容解释如果使用Eclipse建立一个NGN项目
检出(Checking)源代码
要检出NGN源代码,您首先需要一个SVN客户端。使用此命令检出项目源代码:
svn checkout http://imsdroid.googlecode.com/svn imsdroid
该库的源代码在:
imsdroid/branches/2.0/android-ngn-stack
导入NGN项目到Eclipse
NGN项目是下一代网络库
1、打开eclipse
2、选择文件(File)—&导入(Import)—&常规(General)—&现有项目到工作区(Existing Project into workspace)
3、选择android-ngn-stack文件夹,然后单击完成(Finish)
使用Eclipse创建你的第一个NGN应用
1、打开Eclipse,然后选择文件(File)—&新建(New)—&Android Project(android项目)
2、从下一个窗口(”新建Android项目(New Android Project)”)填充如下文本字段:
项目名称(Project name):myFirstApp
路径(Location):&设置任意路径&
构建目标版本(Build Targe):至少Android 2.0
应用程序名称(Application name):myFirstApp
包名称(Package name):org.doubango.test
选中 ”create activity”并命名为”Main”
单击Finish(完成)创建项目
译者注:可能eclipse是操作页面有区别,但基本一致。
3、从Eclipse package explorer中,右键单击myFirstApp,选择”(属性)Properties”然后选择Android从属性窗口,选择“(添加)add”按钮,然后从列表中选择android-ngn-stack库
4、选择“Java编译器(Java Compiler)”从左边更改1.5版本到1.6
5、从左侧选择“Java构建路径(Java Build Path)”,然后选择”库(Libraries)”选项卡。单击“添加JAR文件…(Add JARS…)”然后选择文件”android-ngn-stack/libs/simple-xml-2.3.4.jar”然后“确认(OK)”关闭窗口
6、单击”确认(OK)”关闭窗口
设置Android权限
为了使用该框架你必须在AndroidManifest.xml清单文件添加一些用户权限。
打开myFirstApp/AndroidManifest.xml ,然后填充如下这些权限配置:
&uses-permission android:name=&android.permission.INTERNET& /&
&uses-permission android:name=&android.permission.ACCESS_WIFI_STATE& /&
&uses-permission android:name=&android.permission.ACCESS_NETWORK_STATE& /&
&uses-permission android:name=&android.permission.CHANGE_WIFI_STATE& /&
&uses-permission android:name=&android.permission.CHANGE_NETWORK_STATE& /&
&uses-permission android:name=&android.permission.WRITE_EXTERNAL_STORAGE& /&
&uses-permission android:name=&android.permission.CAMERA& /&
&uses-permission android:name=&android.permission.WAKE_LOCK& /&
&uses-permission android:name=&android.permission.RECORD_AUDIO& /&
&uses-permission android:name=&android.permission.MODIFY_AUDIO_SETTINGS& /&
&uses-permission android:name=&android.permission.VIBRATE& /&
&uses-permission android:name=&android.permission.RECEIVE_BOOT_COMPLETED& /&
&uses-permission android:name=&android.permission.WRITE_SETTINGS& /&
&uses-permission android:name=&android.permission.DISABLE_KEYGUARD& /&
&uses-permission android:name=&android.permission.READ_CONTACTS& /&
&uses-permission android:name=&android.permission.WRITE_CONTACTS& /&
&uses-permission android:name=&android.permission.READ_PHONE_STATE& /&
&uses-permission android:name=&android.permission.PROCESS_OUTGOING_CALLS& /&
&uses-permission android:name=&android.permission.CALL_PHONE& /&
&uses-permission android:name=&android.permission.RAISED_THREAD_PRIORITY& /&
声明你的应用程序作为NGN
如果你的编程水平高建议你把应用程序声明为NGN
1、从”Eclipse package explorer”打开”AndroidManifest.xm“选择“Application”标签下点击浏览(上右Name)然后从列表选择”NgnApplication”
架构(Architecture )
该协议栈提供了三个层次的编程:低,中,高。
构建和运行项目之前,您一个看一看讲解如何设置一个NGN项目
此级别允许您直接通过JNI来访问doubango功能。这个水平是最灵活的一个,但是很难控制(but is out of scoop)因为它太难管理。在这个级别所有的功能都在一个单一包:org.doubango.tinyWRAP例如,下面的代码演示了如果注册到SIP/IMS服务器:
final String realm = &sip:doubango.org&;
final String privateIdentity = &001&;
final String publicIdentity = &sip:001@doubango.org&;
final String password = &my secret&;
final String proxyHost = &192.168.0.1&;
RegistrationSession registrationS
// Sip Callback
final SipCallback callback = new SipCallback() {
public int OnDialogEvent(DialogEvent e) {
final SipSession sipSession = e.getBaseSession();
final long sipSessionId = sipSession.getId();
final short code = e.getCode();
switch (code) {
case tinyWRAPConstants.tsip_event_code_dialog_connecting:
if (registrationSession != null
&& registrationSession.getId() == sipSessionId) {
// Registration in progress
case tinyWRAPConstants.tsip_event_code_dialog_connected:
if (registrationSession != null
&& registrationSession.getId() == sipSessionId) {
// You are registered
case tinyWRAPConstants.tsip_event_code_dialog_terminating:
if (registrationSession != null
&& registrationSession.getId() == sipSessionId) {
// You are unregistering
case tinyWRAPConstants.tsip_event_code_dialog_terminated:
if (registrationSession != null
&& registrationSession.getId() == sipSessionId) {
// You are unregistered
public int OnRegistrationEvent(RegistrationEvent e) {
// low level events
// Create the SipStack
SipStack sipStack = new SipStack(callback, realm, privateIdentity,
publicIdentity);
// Set Proxy Host and port
sipStack.setProxyCSCF(proxyHost, 5060, &UDP&, &IPv4&);
// Set password
sipStack.setPassword(password);
if (sipStack.isValid()) {
if (sipStack.start()) {
registrationSession = new RegistrationSession(sipStack);
registrationSession.setFromUri(publicIdentity);
// Send SIP register request
registrationSession.register_();
这个水平是建立在低水平的。这个水平的主要特点是,它的灵活性,而不过于复杂,所有低级别的功能都封装在全面的API里。例如,如果你想实现一个多层次(multi-stack)(多账户(multi-account))的应用程序,这是不错的选择。
这个水平是建立在底层之上且以后容易得多。高级别由一组服务有单一的NGN引擎实例管理。每个服务负责特定任务。例如,你有一个服务SIP,一个用于联系人管理,一个网络等等
该引擎是一个包含所有服务的一个黑盒子。你必须始终通过引擎检索服务。
你还必须通过NGN引擎启动/停止服务。
下面的代码演示了然后实例化一个引擎
//获取一个引擎实例。这个函数总是服务相同的实例
//这意味着,只要你想你可以从你的代码任何地方调用它
final NgnEngine mEngine = NgnEngine.getInstance();
下面的代码演示如何从引擎得到一些服务:
//获取配置服务
INgnConfigurationService mConfigurationService = mEngine.getConfigurationService();
//获取SIP/IMS服务
INgnSipService mSipService = mEngine.getSipService();
//等等等等
下面的代码演示如何启动/停止引擎。
//启动引擎
mEngine.start();
//停止引擎
mEngine.stop();
//启动/停止所有基础服务引擎
你应该在你的Android扩展类定义应用程序全局对象
基础服务(Base Service)
所有的NGN服务都继承这个类
 联系服务(Contact Service)
联系服务用于检索来自本地地址薄中的联系人
HTTP/HTTPS服务(HTTP/HTTPS Service)
HTTP/HTTPS服务用于检索发送和接收来自远程服务HTTP/HTTPS协议的数据
网络服务(Network Service)
网络服务用于管理WiFi和3G/4G网络连接
声音服务(Sound Service)
该服务是用来播放(铃声,回铃音,警报,…)。使用它之前你必须启动NGN引擎服务。
//获取和实例化NGN引擎
NgnEngine mEngine = NgnEngine.getInstance();
//播放回铃音
mEngine.getSoundService().startRingBackTone();
//停止回铃音
mEngine.getSoundService().stopRingBackTone();
存储服务(Storage Service)
该服务用于管理存储功能
配置服务(Configuration Service)
配置服务用于存储用户偏好。保存所有喜好该服务是持久的,这意味着你可以在应用程序/设备重启找回它。你不应该自己创建或启动此服务。
这项服务的一个实例可以这样检索的:
final INgnConfigurationService mConfigurationService =NgnEngine.getInstance().getConfigurationService();
历史服务(History Service)
该服务用于存储/检索历史事件(音频/视频,消息,…)。你不应该自己创建或启动此服务。
这项服务的一个实例是这样检索的:
final INgnHistoryService mHistoryService = NgnEngine.getInstance().getHistoryService();
SIP/IMS服务(SIP/IMS Service)
该服务用于管理SIP/IMS栈。你不应该自己创建或启动此服务。
这项服务的一个实例可以这样检索:
final INgnSipService mSipService = NgnEngine.getInstance().getSipService();
音频/视频通话(Audio/Video calls)
音频呼叫(Making audio call)
得到音频/视频通话有关通知状态请看这里
final String remoteUri = &+&;
final String validUri = NgnUriUtils.makeValidSipUri(remoteUri);
// sip:+&@doubango.org
NgnAVSession avSession = NgnAVSession.createOutgoingSession(
mSipService.getSipStack(),
NgnMediaType.Audio);
if (avSession.makeCall(validUri)) {
Log.d(TAG, &all is ok&);
Log.e(TAG, &Failed to place the call&);
视频通话(Making video call)
得到音频/视频通话有关通知状态请看这里
final String remoteUri = &+&;
final String validUri = NgnUriUtils.makeValidSipUri(remoteUri);
// sip:+&@doubango.org
NgnAVSession avSession = NgnAVSession.createOutgoingSession(
mSipService.getSipStack(),
NgnMediaType.AudioVideo);
if (avSession.makeCall(validUri)) {
Log.d(TAG, &all is ok&);
Log.e(TAG, &Failed to place the call&);
短信与聊天(SMS and Chat)
3GPP Binary SMS
// 短信中心
final String SMSC = &sip:+@doubango.org&;
final String remotePartyUri = &sip:+@doubango.org&;
final String textToSend = &hello world!&;
final NgnMessagingSession imSession =
NgnMessagingSession.createOutgoingSession(mSipService.getSipStack(),remotePartyUri);
if(!imSession.SendBinaryMessage(textToSend,SMSC)){
Log.e(TAG,&Failed to send&);
Log.d(TAG,&Message sent&);
//发布会话
NgnMessagingSession.releaseSession(imSession);
寻呼机模式IM(Pager Mode IM)
final String textToSend = &hello world!&;
final String remotePartyUri = &sip:+@doubango.org&;
final NgnMessagingSession imSession =
NgnMessagingSession.createOutgoingSession(mSipService.getSipStack(),remotePartyUri);
if(!imSession.sendTextMessage(textToSend)){
Log.e(TAG,&Failed to send&);
Log.d(TAG,&Message sent&);
// 发布会话
NgnMessagingSession.releaseSession(imSession);
监听事件(Listening to events)
SIP/IMS服务负责所有任务相关的SIP协议(注册,音频/视频通话,寻呼机模式IM),你可以订阅事件改变当注册状态变化,新的SIP消息被接收,新得到的通知,输入的音频/视频通话,…所有通知通过不止一次异步查询的方式发送给您。
监听状态注册状态改变(Listening for registration state change)
你可以监听得到当你登录/退出时注册状态变化通知
final TextView mTvInfo = (TextView) findViewById(R.id.textViewInfo);
final BroadcastReceiver mSipBroadCastRecv = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
// Registration Event
if (NgnRegistrationEventArgs.ACTION_REGISTRATION_EVENT.equals(action)) {
NgnRegistrationEventArgs args = intent.getParcelableExtra(NgnEventArgs.EXTRA_EMBEDDED);
if (args == null) {
Log.e(TAG, &Invalid event args&);
switch (args.getEventType()) {
case REGISTRATION_NOK:
mTvInfo.setText(&Failed to register :(&);
case UNREGISTRATION_OK:
mTvInfo.setText(&You are now unregistered :)&);
case REGISTRATION_OK:
mTvInfo.setText(&You are now registered :)&);
case REGISTRATION_INPROGRESS:
mTvInfo.setText(&Trying to register...&);
case UNREGISTRATION_INPROGRESS:
mTvInfo.setText(&Trying to unregister...&);
case UNREGISTRATION_NOK:
mTvInfo.setText(&Failed to unregister :(&);
final IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(NgnRegistrationEventArgs.ACTION_REGISTRATION_EVENT);
registerReceiver(mSipBroadCastRecv, intentFilter);
监听音频/视频通话状态变化(Listening for audio/video call state change)
你可以监听获得音频/视频呼叫状态变更通知,呼叫状态变更(呼入(incoming),正在呼叫(incall),外呼(outgoing),终止(terminated))
final BroadcastReceiver mSipBroadCastRecv = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (NgnInviteEventArgs.ACTION_INVITE_EVENT.equals(action)) {
NgnInviteEventArgs args = intent.getParcelableExtra(NgnEventArgs.EXTRA_EMBEDDED);
if (args == null) {
Log.e(TAG, &Invalid event args&);
Log.d(TAG,&This is anevent for session number &+ args.getSessionId());
// Retrieve the sessionfrom the store
NgnAVSession avSession = NgnAVSession.getSession(args.getSessionId());
if (avSession == null) {
Log.e(TAG, &Cannot find session&);
switch ((state = avSession.getState())) {
case NONE:
case INCOMING:
Log.i(TAG, &Incoming call&);
case INPROGRESS:
Log.i(TAG, &Call in progress&);
case REMOTE_RINGING:
Log.i(TAG, &Remote party is ringing&);
case EARLY_MEDIA:
Log.i(TAG, &Early media started&);
case INCALL:
Log.i(TAG, &Call connected&);
case TERMINATING:
Log.i(TAG, &Call terminating&);
case TERMINATED:
Log.i(TAG, &Call terminated&);
配置(Configuration)
试图注册到SIP/IMS服务你必须配置你的凭证。配置服务负责这些任务。使用喜好配置服务都是持久的,这意味着应用程序/设备重新启动。配置信息,你必须得到一个实例这样一个引擎服务:
final INgnConfigurationService mConfigurationService
域(Realm)
域是验证域的名称。它应该是一个有效的SIP URI(例如:sip:open-ims.test or sip:10.0.0.1 )。该域是强制性的,栈开始之前应该设置,一旦栈开始时你不能改变它的值。如果Proxy-CSCF的地址找不到,那么栈会自动使用DNS NAPTR+SRV/或用于动态搜索的DHCP机制。域的值将用作于DNS NAPTR查询的域名中。欲了解更多有关于如何设置CSCF IP地址和端口的信息,请参见第22.1.8
final String myRealm = &sip:doubango.org&;
final boolean bSaveNow = true;
mConfigurationService(ConfigurationEntry.NETWORK_REALM, myRealm, bSaveNow);
IMS 私有标识(IMPI)(IMS Private Identity (IMPI))
IMS私有标识(又名IMPI)是分配给一个家庭网络用户(或UE)的唯一标识符。它可以是一个SIP URI(例如:sip:bob@open-ims.test),一个电话URI(例如,电话:+)或者如何字母数字字符串(例如:bob@open-ims.test 或 bob)它被用来验证UE(SIP授权/Proxy-Authorization用户名字段)。在现实世界中,应该存储在UICC(通用集成电路卡)。对于那些使用该IMS协议栈作为基本(IETF)的SIP协议栈,该IMPU验证名称应与他们一致。该IMPI是强制性的,栈开始之前,应该设置。你不应该在栈被启动去改变IMPI。
IMPI被栈启动
final String myIMPI = &&;
final boolean bSaveNow = true;
mConfigurationService(ConfigurationEntry.IDENTITY_IMPI, myIMPI, bSaveNow);
IMS公共标识(IMPU)(IMS Public Identity (IMPU))
正如它的名字一样,它是你的公共可见的标识符,你愿意接听电话或者任何需求。一个IMPU可以是一个SIP或者URI(比如电话:tel:+ 或 sip:bob@openims.test)。在IMS中,用户可具有相关联的独特的IMPI个数的IMPU。对于那些使用该IMS栈基本的SIP协议栈,该IMPU应该与他们的SIP URI一直。该IMPU是强制性的,栈开始前,一个进行设置。你不应该在栈被启动去改变IMPU。
如果你想在栈开始改变IMPU(而不是,改变P-Preferred-Identity默认的公共标识符)
final boolean bSaveNow = true;
final String myIMPU = &sip:@doubango.org&;
mConfigurationService(ConfigurationEntry.IDENTITY_IMPU, myIMPU, bSaveNow);
首选身份(Preferred Identity)
作为一个用户有多个IMPU,它可以为呼出每个请求,定义IMPU被使用设置首选身份。用户检查该IPMU没有禁止。一个是IMPU如果它没有出现在返回200和相关联的URL被禁止。缺省情况下,首选的身份是在相关联的标识列表中第一个URL。如果IMPU用于注册的用户被禁止,那么栈将使用URI返回默认SCSCF。
你不应该手动设置此SIP(P-Preferred-Identity)它是由栈
Proxy-CSCF 主机地址(Proxy-CSCF Host address)
Proxy-CSCF 主机是SIP的IP地址(192.168.0.1)或FQDN(doubango.org)注册商。你应该在必要时设置代理CSCF地址和IP。动态机制(DNS NAPTR/或DHCPv4/v6)应该被使用。
下面的代码演示了如何设置ProxyCSCF IP地址和端口。如果端口找不到,那么它的默认值是5060
// Sets IP address
final String proxyHost = &192.168.0.1&;
mConfigurationService(ConfigurationEntry.NETWORK_PCSCF_HOST, proxyHost);
// Sets port
final int proxyPort = 5060;
mConfigurationService.putInt(ConfigurationEntry.NETWORK_PCSCF_PORT, proxyPort);
Save changes
mConfigurationService.commit();
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&原文:http://www.cnblogs.com/ProgrammerHelloWorld/p/4325388.html
教程昨日排行
&&国之画&&&& &&&&&&
&& &&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!}

我要回帖

更多关于 www. gngn..66.com 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信