Java SIP 客户端喜欢 android
Java SIP client like present in android
我的要求是使用 java servlet 进行 SIP 注册,然后进行音频呼叫。在 android 中,我找到了执行 Android Supporting SIP 的简单方法,但是我无法在 java 中使用相同的 android 代码,因为 [=] 中存在 SIP 管理器 class 18=] 包。我的用户应该使用什么在 java servlet 中进行 SIP 注册。
下面是android代码
if (sipManager == null) {
sipManager = SipManager.newInstance(this);
}
SipProfile.Builder builder = null;
try {
builder = new SipProfile.Builder("7001", "XXX.XXX.X.XXX");
builder.setPassword("XXX");
sipProfile = builder.build();
Intent i = new Intent();
i.setAction("android.SipDemo.INCOMING_CALL");
PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, Intent.FILL_IN_DATA);
sipManager.open(sipProfile, pi, null);
sipManager.setRegistrationListener(sipProfile.getUriString(), new SipRegistrationListener() {
public void onRegistering(String localProfileUri) {
}
public void onRegistrationDone(String localProfileUri, long expiryTime) {
}
public void onRegistrationFailed(String localProfileUri, int errorCode,
String errorMessage) {
}
});
} catch (ParseException pe) {
pe.printStackTrace();
} catch (SipException se) {
se.printStackTrace();
}
从你的问题中不清楚你是如何设想这个工作的。 Servlet 是服务器端的,所以如果 SIP 消息是从服务器发起的,但我怀疑您真正想要的是发起 SIP 会话,然后是使用来自客户端的一些实时流协议建立的音频流。
有 Java APISIP,Sun / Oracle 有一个标准 API 用于使用 SIP 和 IMS 与电信网络集成:https://www.oracle.com/technetwork/java/introduction-jain-sip-090386.html
不确定它们是否还在维护。
但是,我怀疑这不是您真正需要的。也许你应该看看这个基于客户端的 WebRTC 和 SIP 客户端:
http://www.doubango.org/sipml5/
您的 JSP 将提供此 Java 脚本,它允许用户启动 SIP 会话并建立音频呼叫。
从他们的文档来看,这似乎很简单:
SIPml.init(
function(e){
var stack = new SIPml.Stack({realm: 'example.org', impi: 'bob', impu: 'sip:bob@example.org', password: 'mysecret',
events_listener: { events: 'started', listener: function(e){
var callSession = stack.newSession('call-audiovideo', {
video_local: document.getElementById('video-local'),
video_remote: document.getElementById('video-remote'),
audio_remote: document.getElementById('audio-remote')
});
callSession.call('alice');
}
}
});
stack.start();
}
);
我的要求是使用 java servlet 进行 SIP 注册,然后进行音频呼叫。在 android 中,我找到了执行 Android Supporting SIP 的简单方法,但是我无法在 java 中使用相同的 android 代码,因为 [=] 中存在 SIP 管理器 class 18=] 包。我的用户应该使用什么在 java servlet 中进行 SIP 注册。
下面是android代码
if (sipManager == null) {
sipManager = SipManager.newInstance(this);
}
SipProfile.Builder builder = null;
try {
builder = new SipProfile.Builder("7001", "XXX.XXX.X.XXX");
builder.setPassword("XXX");
sipProfile = builder.build();
Intent i = new Intent();
i.setAction("android.SipDemo.INCOMING_CALL");
PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, Intent.FILL_IN_DATA);
sipManager.open(sipProfile, pi, null);
sipManager.setRegistrationListener(sipProfile.getUriString(), new SipRegistrationListener() {
public void onRegistering(String localProfileUri) {
}
public void onRegistrationDone(String localProfileUri, long expiryTime) {
}
public void onRegistrationFailed(String localProfileUri, int errorCode,
String errorMessage) {
}
});
} catch (ParseException pe) {
pe.printStackTrace();
} catch (SipException se) {
se.printStackTrace();
}
从你的问题中不清楚你是如何设想这个工作的。 Servlet 是服务器端的,所以如果 SIP 消息是从服务器发起的,但我怀疑您真正想要的是发起 SIP 会话,然后是使用来自客户端的一些实时流协议建立的音频流。
有 Java APISIP,Sun / Oracle 有一个标准 API 用于使用 SIP 和 IMS 与电信网络集成:https://www.oracle.com/technetwork/java/introduction-jain-sip-090386.html 不确定它们是否还在维护。
但是,我怀疑这不是您真正需要的。也许你应该看看这个基于客户端的 WebRTC 和 SIP 客户端:
http://www.doubango.org/sipml5/
您的 JSP 将提供此 Java 脚本,它允许用户启动 SIP 会话并建立音频呼叫。
从他们的文档来看,这似乎很简单:
SIPml.init(
function(e){
var stack = new SIPml.Stack({realm: 'example.org', impi: 'bob', impu: 'sip:bob@example.org', password: 'mysecret',
events_listener: { events: 'started', listener: function(e){
var callSession = stack.newSession('call-audiovideo', {
video_local: document.getElementById('video-local'),
video_remote: document.getElementById('video-remote'),
audio_remote: document.getElementById('audio-remote')
});
callSession.call('alice');
}
}
});
stack.start();
}
);