「voip协议java」voip协议如何定位电信诈骗
本篇文章给大家谈谈voip协议java,以及voip协议如何定位电信诈骗对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
voip什么意思?
基于IP的语音传输(英语:Voice over Internet Protocol,缩写为VoIP)是一种语音通话技术,经由网际协议(IP)来达成语音通话与多媒体会议,也就是经由互联网来进行通信。
其他非正式的名称有IP电话(IP telephony)、互联网电话(Internet telephony)、宽带电话(broadband telephony)以及宽带电话服务(broadband phone service)。
VoIP可用于包括VoIP电话、智能手机、个人计算机在内的诸多互联网接入设备,通过蜂窝网络、Wi-Fi进行通话及发送短信。
VoIP的基本原理是通过语音的压缩算法对语音数据编码进行压缩处理,然后把这些语音数据按 TCP/IP 标准进行打包,经过 IP 网络把数据包送至接收地,再把这些语音数据包串起来,经过解压处理后,恢复成原来的语音信号,从而达到由互联网传送语音的目的。
IP 电话的核心与关键设备是 IP 网关,它把各地区电话区号映射为相应的地区网关 IP 地址。这些信息存放在一个数据库中,数据接续处理软件将完成呼叫处理、数字语音打包、路由管理等功能。
在用户拨打长途电话时,网关根据电话区号数据库资料,确定相应网关的 IP 地址,并将此 IP 地址加入 IP 数据包中,同时选择最佳路由,以减少传输延时, IP 数据包经 Internet 到达目的地的网关。
在一些 Internet 尚未延伸到或暂时未设立网关的地区,可设置路由,由最近的网关通过长途电话网转接,实现通信业务。
网际协议
目前常用的协议如H.323、SIP、MEGACO和MGCP。
1、H.323
H.323是常见的VoIP标准,由ITU-T于1996年提出,原本是用于局域网(LAN)上的视频会议,后来被应用于VoIP网络电话上。
2、会话发起协议(SIP)
是IETF创建VoIP通话连接的协议标准。SIP是一种应用层控制协议,用于和一个或多个参与者创建、修改和终止会话。
3、SIP的结构与HTTP(客户-服务器协议)相似
客户机发出请求,并发送给服务器,服务器处理这些请求后给客户机回送一个响应。请求与响应形成一次交换(transaction)。
4、媒体网关控制协议(MGCP)
是由思科和Telcordia提议的VoIP协议,它定义了调用控制单元(调用代理或媒体网关)与电话网关之间的通信服务。MGCP属于控制协议,允许中心控制台监测IP电话和网关事件,并通知它们发送内容至指定地址。
5、媒体网关控制协议(Megaco)
是IETF和ITU-T(ITU-T H.248建议)共同努力的结果。Megaco/H.248是一种用于控制物理上分开的多媒体网关的协议单元的协议,从而可以从媒体转化中分离调用控制。
以上内容参考 百度百科-VoIP
VOIP协议是什么 ?
是一种技术,基于IP的语音技术(Voice over IP,简称VoIP),俗称宽带电话,宽带电话是通过接入宽带网络,进行语音通话的全新通信终端。
VoIP(VoiceoverInternetProtocol)是一种以IP电话为主,并推出相应的增值业务的技术。
VoIP可以在IP网络上便宜的传送语音、传真、视频、和数据等业务,如统一消息、虚拟电话、虚拟语音/传真邮箱、查号业务、Internet呼叫中心、Internet呼叫管理、电视会议、电子商务、传真存储转发和各种信息的存储转发等。
怎样打开VOIP与SIP
打开SIP功能的方法,适用于JB2,JB3,JB5:
请在alps\mediatek\config\product_nam\ProjectConfig.mk中,将MTK_SIP_SUPPORT置为yes即可
打开SIP功能的方法,适用于JB2之前的版本:
1. 在文件alps\mediatek\config\product_name\android.software.sip.voip.xml中添加如下代码
permissions
feature name="android.software.sip" /
feature name="android.software.sip.voip" /
/permissions
2. 在文件alps\mediatek\config\product_name\android.software.sip.xml
permissions
feature name="android.software.sip" /
/permissions
允许SIP使用GPRS,仅针对GB, GB2,GB3:
在文件alps\frameworks\base\core\res\res\values\Config.xml中将
bool name="config_sip_wifi_only"true/bool
修改为
bool name="config_sip_wifi_only"false/bool
注:JB2,JB3,JB5版本中SIP call功能与OP02互斥,不可以同时开启。
原因是由于运营商的某些原因不允许开启Sip功能。
如希望同时使用,可以修改mk去除互斥条件:
/alps/mediatek/build/addon/core/android_dep_rule.mak中去掉以下内容
############################################################
ifneq ($(filter OP02%, $(OPTR_SPEC_SEG_DEF)),)
ifeq ($(strip $(MTK_SIP_SUPPORT)),yes)
$(call dep-err-common, Please do not set OPTR_SPEC_SEG_DEF as OP02* or set MTK_SIP_SUPPORT as no)
endif
endif
1、VOIP基于SIP协议,SDK2.3包含一个SIP协议栈和框架API
2、VOIP位于android.net.sip包中,最重要的为SipManager类,可开发基于SIP的VOIP应用。使用时要包含android.permission.INTERNET和android.permission.USE_SIP权限
3、如果在market中显示仅支持VOIP API幸好的手机的话,发布时需要在androidManifest.xml中加入uses_feature android:name = "android.software.sip" android:required = "true"和uses_feature android:name = "android.software.sip.voip"
4、要支持SIP API
(1)仅Android2.3或更高版本平台支持
(2)不是所有设备都提供SIP支持,确保你的APP只安装在支持SIP的装置上
5、根据GOOGLE官方DEMO项目来扩展的概念
二、类及方法描述
1、一个基本的VOIP项目至少需要三个类SIPSettings(对SIP的基本设置身份验证)、WalkieTalkieActivity(登录到SIP设备供应商,注册device去处理来电,拨打电话,在通话过程中用户界面管理)、IncomingCallReceiver(监听传入的SIP电话,然后传递这些SIP电话给WalkieTalkieActivity控制)
2、
WalkieTalkieActivity
A、SipManager.newInstance()--此方法中首先判断context是否支持SIP API,若支持则new SipManager。SipManager构造函数中,实例化了一个ISIPService(运用的公式:
IBinder b =ServiceManager.getService(Context.SIP_SERVICE); //获取系统相应的服务
ISipService service = ISipService.Stub.asInterface(bIBinder);)
上面这两句代码其实是使用了AIDL,就以SipService为例,步骤如下
Service端
1、编写aidl文件:ISipService.aidl,并定义使用的接口(就等同于interface一样)
2、使用makefile生成与之同名的JAVA文件,SipService.java,此类继承extends ISipService.Stub并实现接口定义的方法或者在SipService extends Service,并代码中加入
ISipService.stub sipImpl = new ISipService.stub(){
//实现其接口方法,在SipService.java中是实现了一个名为start()的方法,里面有句是ServiceManager.addService("sip",newSipService(context));表示SipService已经交给ServiceManager统一管理了
}
Client端
一(以SIPService为例)
1、而在需要用到SipService时,也就是我们构造SipManager的时候,就通过ServiceManager.getService(Context.SIP_SERVICE)获得SIP的服务(类型为IBinder)
2、并调用 ISipService.Stub.asInterface(IBinder);去获取一个SipService实例(前提是该Service一定是通过ServiceManager.addService的方式添加进去管理的,这样才能找到此Service)
二(以普通Activity为例)
1、利用Intent intent = new Intent(Activity.this,SipService.class);--bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);来绑定SERVICE,在serviceConnection的onServiceConnected方法中,使用IService.stub.asIntentface(IBinder);来获取实例
B、SipManager创建好后,先从SharedPreference中获取username,domain及pwd,如果第一次进来没有设置这些的话则需要先创建账户,这里用EditTextPreference来保存用户信息,好处是当填写信息并返回后,EditTextPreference会自动将值放入SharedPreference中。我们假设username="woody";domain="192.168.12.30";pwd="910913"
C、这时,我们的SipManager以及用户信息已经设定好了,接下来使用了这句SipProfile.Builder builder = new
SipProfile.Builder(username, domain);我们去看看SipProfile.Builder中做了些什么:
SipURI mUri =mAddressFactory.createSipURI(username,serverDomain);
SipProfile mProfile.mDomain=serverDomain; //设置domain
(在mAddressFactory.createSipURl方法中,我选取了一些核心代码)
StringBuffer uriString=new StringBuffer("sip:");
uriString.append(user);
uriString.append("@");
//if host is an IPv6 string we should enclose it in sq brackets
if(host.indexOf(':') !=host.lastIndexOf(':')host.trim().charAt(0) !='[')
host='['+host+']';
uriString.append(host);
StringMsgParser smp=new StringMsgParser();
SipUrl sipUri=smp.parseSIPUrl(uriString.toString());
return sipUri;
从以上代码可以看出其实就是在Format SipURL罢了,里面多加了个if host为IPV6的判断(IPv4为为32位,十进制;IPv6为128位,16进制)。urlString最后为"sip:woody@192.168.12.30",smp.parseSIPUrl()方法中,有关于是如何parse的就不做阐述了,总之最后返回了一个SipUri
D、接下来就是SipProfile sipProfile = SipProfile.Builder.build(); //返回一个SipProfile object
在SipProfile.Builder.build()中,设置了sipProfile的pwd值,删除了之前SipUrl对象里的
password(mUri.setUserPassword(null);)、将sipProfile的address属性设置为AddressImpl类型的对象值、调用AddressFactory.createURI返回一个SipUri,并sipProfile.mProxyAddress=sipUri.getHost();
E、创建PendingIntent对象:(Intent与PendingIntent区别在于Intent是及时启动,而PendingIntent是不立刻反应,在特定的情况或通知下才启动,适用于AlertClock等)
Intent i = new Intent();
i.setAction("android.SipDemo.INCOMING_CALL");
PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, Intent.FILL_IN_DATA);
F、
SipManager.open(sipProfile,PendingIntent,null); //(实际是SIPService在做操作)设置localSIPProfile的callingID--建立SIP连接(算是注册至SIP Server)--打开receiveCall
其中建立SIP连接,最后能追溯到是在SipSessionGroup.java的reset()方法中通过是注册服务器实现的,
注册服务器的步骤为:
(1)设置服务器的属性,例如服务器的地址(IP_ADDRESS_PROP)、栈名(javax.sip.STACK_NAME)、发出去的路径(localProfile中的javax.sip.OUTBOUND_PROXY)、线程池的大小(gov.nist.javax.sip.THREAD_POOL_SIZE)等,并且将这些属性加载到服务器中.
(2)通过SipFactory的静态方法取得一个实例,然后通过SipFactory实例sipfactory
(3)创建一个SipStack实例sipstack(这一步获得IP_ADDRESS_PROP,String address = Properties.getProperty("javax.sip.IP_ADDRESS");)
(4)用sipstack创建一个SipProvider实例sipProvider
(5)注册SipListener
G、A~F步骤都是在做准备工作,大致的步骤如下:new SIPService--new SIPManager--设定用户信息--new SIPURI--new SIPProfile--new PendingIntent--set sipProfile callingID--(if profile.getAutoRegistation)open toReceiveCalls--register SipService
现在是call someone~呼叫的工作是SipAudioCall类来完成(可用sipManager.makeAudioCall或takeAudioCall来实例化,SipAudioCall.startAudio时需要 RECORD_AUDIO, ACCESS_WIFI_STATE, and WAKE_LOCK permissions,
化,SipAudioCall.startAudio时需要 RECORD_AUDIO, ACCESS_WIFI_STATE, and WAKE_LOCK permissions,setSpeakerMode() 时需要MODIFY_AUDIO_SETTINGS permission)
【1】当需要呼叫时,使用sipManager.makeAudioCall(String localProfileURI, String peerProfileURI, SipAudioCall.listener,int timeout);来创建一个SipAudioCall,其中timeout以seconds为单位,过了timeout表示打电话超时。需要打给别人时使用makeAudioCall创建,接听电话用takeAudioCall来创建sipAudioCall
【2】SipAudioCall中有一个嵌套的class:SipAudioCall.Listener(此类主要用于监听SIP CALL,when[呼叫电话 or 接听电话])
SipAudioCall.Listener listener = new SipAudioCall.Listener() {
@Override
public void onCallEstablished(SipAudioCall call) { //呼叫建立
call.startAudio(); //启动音频
call.setSpeakerMode(true); //调整为可讲话模式
call.toggleMute(); //触发无声
updateStatus(call);
}
};
SipAudioCall call = manager.makeAudioCall(me.getUriString(), sipAddress, listener, 30);
(以上例子为makeAudioCall)
【3】我们看看makeAudioCall()方法(makeAudioCall requires 2 sipProfile):
SipAudioCall call =new SipAudioCall(mContext, localProfile);
call.setListener(listener); //这两句很简单就是创建一个local的sipAudioCall
SipSession s = createSipSession(localProfile, null); --mSipService.createSession(localProfile, null);// sipService来创建session,并保存在SipSessionGroupExt中
call.makeCall(peerProfile,s,null); //这句就是呼叫,最后追溯到实际是SipSession.makecall
总结:在发起通话中
首先是创建SipAudioCall.listener,以便监听对话建立和对话结束,然后做相应的操作
然后是SipManager.makeAudioCall(localAdd,llistener,XXXX),在makeAudioCall方法中
A、创建一个sipAudioCall(localProfile)
B、创建SipSession以建立起会话
C、SipSession.makeCall(peerProfile,XXXX); //SipSession呼叫远程profile
【4】关于接电话道理都差不多,takeAudioCall
通过之前设置的callingID来查找mSipService.getPendingSession(callId);来获得SipSession。并创建SipAudioCall,然后attachCall就算接受电话了
VoIP主要有哪些协议标准
VoIP使用的主要协定有H.323、会话初始协议(SIP)、H.248、媒体闸道控制协议(MGCP)四种,分为对等式协定和主从式协定两大类。对等 式协议包括SIP和H.323,主从式协议包括H.248和MGCP。目前较有影响的VoIP协议体系包括ITU-T提出的H.323协定和IETE提出 的SIP协议。
VOIP协议的详细介绍
目前,存在一些VOIP 协议栈,它们源于各种标准团体和提供商,如 H.323、SIP、MEGACO 和 MGCP。
H.323 是一种 ITU-T 标准,最初用于局域网(LAN)上的多媒体会议,后来扩展至覆盖 VOIP。该标准既包括了点对点通信也包括了多点会议。H.323 定义了四种逻辑组成部分:终端、网关、关守及多点控制单元(MCU)。终端、网关和 MCU 均被视为终端点。
会话发起协议(SIP)是建立 VOIP 连接的 IETF 标准。SIP 是一种应用层控制协议,用于和一个或多个参与者创建、修改和终止会话。SIP 的结构与 HTTP (客户-服务器协议)相似。客户机发出请求,并发送给服务器,服务器处理这些请求后给客户机发送一个响应。该请求与响应形成一次事务。
媒体网关控制协议(MGCP)是由 Cisco 和 Telcordia 提议的 VOIP 协议,它定义了呼叫控制单元(呼叫代理或媒体网关)与电话网关之间的通信服务。MGCP 属于控制协议,允许中心控制台监测 IP 电话和网关事件,并通知它们发送内容至指定地址。在 MGCP 结构中,智能呼叫控制置于网关外部并由呼叫控制单元(呼叫代理)来处理。同时呼叫控制单元互相保持同步,发送一致的命令给网关。
媒体网关控制协议(Megaco)是 IETF 和 ITU-T (ITU-T 推荐 H.248)共同努力的结果。Megaco/H.248 是一种用于控制物理上分开的多媒体网关的协议单元的协议,从而可以从媒体转化中分离呼叫控制。Megaco/H.248 说明了用于转换电路交换语音到基于包的通信流量的媒体网关(MG)和用于规定这种流量的服务逻辑的媒介网关控制器之间的联系。Megaco/H.248 通知 MG 将来自于数据包或单元数据网络之外的数据流连接到数据包或单元数据流上,如实时传输协议(RTP)。从 VOIP 结构和网关控制的关系来看, Megaco/H.248 与 MGCP 在本质上相当相似,但是 Megaco/H.248 支持更广泛的网络,如 ATM。
VOIP协议的VOIP手机
VoIP手机也叫VoIP双模手机或者简称IP手机,它完美融合GSM和WiFi,双模同时待机,共享用户资料。作为普通手机,有了它,用户可以在没有WiFi环境的时候使用传统的G网服务,包括打电话、发短信彩信、GPRS上网等;在任何有无线网络的地方人们可以用它享受免费的高速网上冲浪,IM聊天,收发电子邮件等新潮移动技术,更重要的是,人们利用voip双模手机可以通过网络,以超低的价格拨打普通电话和手机,voip手机之间通过网络互相通话更是免费的,且无需运营商的支持,同时简单通过手机终端就能实现3方通话。作为PDA手机,voip双模手机在使用上有很多智能化的贴心设计,包括手写输入、个人信息管理、常用文档格式阅读和编辑、以及拍摄高象素的数码图片等等。
GSM/VoIP双模智能手机(型号3000)
派锐天科双模手机是全球首款基于SIP协议的Window Mobile 6.0双模终端产品。它具有如下独特的功能:
TI OMAP 850芯片组
⒉5 英寸,240x320像素 TFT LCD
内存(RAM:64MB,ROM:128MB)
200万像素 CMOS 摄像头
QWERTY 全键盘
蓝牙1.2/红外1.2
Windows Mobile 6.0 PPC
三频: 900/1800/1900MHz
支持EDGE
Mini-SD 存储卡
GSM与VoWLAN同时待机
可同时接听GSM和VoWLAN电话
自动或手动转换使用GSM/VoWLAN呼出电话
自动或手动转换使用GPRS/WLAN进行数据应用
统一的电话簿功能
支持IEEE 802.11b/g
支持基于SIP协议的GSM/VoWLAN通话切换
Office办公软件(Word,Excel,PowerPoint)
voip协议java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于voip协议如何定位电信诈骗、voip协议java的信息别忘了在本站进行查找喔。
发布于:2022-12-10,除非注明,否则均为
原创文章,转载请注明出处。