package bupt.mxly.healthcare.sipchat.jsip_ua.impl;
import android.gov.nist.javax.sdp.SessionDescriptionImpl;
import android.gov.nist.javax.sdp.parser.SDPAnnounceParser;
import android.gov.nist.javax.sip.SipStackExt;
import android.gov.nist.javax.sip.clientauthutils.AuthenticationHelper;
import android.gov.nist.javax.sip.clientauthutils.DigestServerAuthenticationHelper;
import android.gov.nist.javax.sip.message.SIPMessage;
import android.javax.sdp.MediaDescription;
import android.javax.sdp.SdpException;
import android.javax.sip.ClientTransaction;
import android.javax.sip.Dialog;
import android.javax.sip.DialogState;
import android.javax.sip.DialogTerminatedEvent;
import android.javax.sip.IOExceptionEvent;
import android.javax.sip.InvalidArgumentException;
import android.javax.sip.ListeningPoint;
import android.javax.sip.ObjectInUseException;
import android.javax.sip.PeerUnavailableException;
import android.javax.sip.RequestEvent;
import android.javax.sip.ResponseEvent;
import android.javax.sip.ServerTransaction;
import android.javax.sip.SipException;
import android.javax.sip.SipFactory;
import android.javax.sip.SipListener;
import android.javax.sip.SipProvider;
import android.javax.sip.SipStack;
import android.javax.sip.TimeoutEvent;
import android.javax.sip.Transaction;
import android.javax.sip.TransactionDoesNotExistException;
import android.javax.sip.TransactionTerminatedEvent;
import android.javax.sip.TransactionUnavailableException;
import android.javax.sip.address.Address;
import android.javax.sip.address.AddressFactory;
import android.javax.sip.header.CSeqHeader;
import android.javax.sip.header.ContactHeader;
import android.javax.sip.header.ContentTypeHeader;
import android.javax.sip.header.HeaderFactory;
import android.javax.sip.header.ToHeader;
import android.javax.sip.header.ViaHeader;
import android.javax.sip.message.MessageFactory;
import android.javax.sip.message.Request;
import android.javax.sip.message.Response;
import org.apache.http.conn.util.InetAddressUtils;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Properties;
import bupt.mxly.healthcare.sipchat.jsip_ua.ISipEventListener;
import bupt.mxly.healthcare.sipchat.jsip_ua.ISipManager;
import bupt.mxly.healthcare.sipchat.jsip_ua.NotInitializedException;
import bupt.mxly.healthcare.sipchat.jsip_ua.SipManagerState;
import bupt.mxly.healthcare.sipchat.jsip_ua.SipProfile;
import bupt.mxly.healthcare.sipchat.jsip_ua.impl.sip_msg.SipRequestMsgBuilder;
//import jsip_ua.ISipEventListener;
//import jsip_ua.ISipManager;
//import jsip_ua.NotInitializedException;
//import jsip_ua.SipManagerState;
//import jsip_ua.SipProfile;
//import jsip_ua.impl.SipEvent.SipEventType;
//import jsip_ua.impl.sip_msg.SipRequestMsgBuilder;
public class SipManager implements SipListener, ISipManager, Serializable {
enum CallDirection { NONE, INCOMING, OUTGOING, };
private MessageProcessor messageProcessor;
public static SipRequestMsgBuilder sipRequestBuilder = new SipRequestMsgBuilder();
private static SipStack sipStack;
public SipProvider sipProvider;
public HeaderFactory headerFactory;
public AddressFactory addressFactory;
public MessageFactory messageFactory;
public SipFactory sipFactory;
private ListeningPoint udpListeningPoint;
private SipProfile sipProfile;
private Dialog dialog;
// Save the created ACK request, to respond to retransmitted 2xx
private Request ackRequest;
private boolean ackReceived;
private ArrayList<ISipEventListener> sipEventListenerList = new ArrayList<ISipEventListener>();
private boolean initialized;
private SipManagerState sipManagerState;
private HashMap<String,String> customHeaders;
private ClientTransaction currentClientTransaction = null;
private ServerTransaction currentServerTransaction;
public int ackCount = 0;
DigestServerAuthenticationHelper dsam;
// Is it an outgoing call or incoming call. We're using this so that when we hit
// hangup we know which transaction to use, the client or the server (maybe we
// could also use dialog.isServer() flag but have found mixed opinions about it)
CallDirection direction = CallDirection.NONE;
private int remoteRtpPort;
// Constructors/Initializers
public SipManager(SipProfile sipProfile) {
this.sipProfile = sipProfile;
initializeSipStack();//初始化sip协议栈
}
private boolean initializeSipStack()
{
sipManagerState = SipManagerState.REGISTERING;
this.sipProfile.setLocalIp(getIPAddress(true));
sipFactory = SipFactory.getInstance();
sipFactory.resetFactory();
sipFactory.setPathName("android.gov.nist");
Properties properties = new Properties();//获得sipprofile里有关sip协议栈的相关信息
properties.setProperty("android.javax.sip.OUTBOUND_PROXY", sipProfile.getRemoteEndpoint()
+ "/" + sipProfile.getTransport());
properties.setProperty("android.javax.sip.STACK_NAME", "androidSip");
try {
if (udpListeningPoint != null) {
// Binding again
sipStack.deleteListeningPoint(udpListeningPoint);
sipProvider.removeSipListener(this);
}
sipStack = sipFactory.createSipStack(properties);//根据sipprofile里的信息定制sip协议栈
System.out.println("createSipStack " + sipStack);
} catch (PeerUnavailableException e) {
return false;
} catch (ObjectInUseException e) {
return false;
}
try {
//根据sipprofile里的信息定制sip协议栈
headerFactory = sipFactory.createHeaderFactory();
addressFactory = sipFactory.createAddressFactory();
messageFactory = sipFactory.createMessageFactory();
udpListeningPoint = sipStack.createListeningPoint(
sipProfile.getLocalIp(), sipProfile.getLocalPort(), sipProfile.getTransport());
sipProvider = sipStack.createSipProvider(udpListeningPoint);
sipProvider.addSipListener(this);
initialized = true;//表示初始化已经完成
sipManagerState = SipManagerState.READY;
System.out.println("cyy:sipmanager is ready");
} catch (PeerUnavailableException e) {
return false;
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
// *** Setters/Getters *** //
public boolean isInitialized() {
return initialized;
}
public SipProfile getSipProfile() {
return sipProfile;
}
public void setSipProfile(SipProfile sipProfile) {
this.sipProfile = sipProfile;
}
public synchronized void addSipEventListener(DeviceImpl listener) {
if (!sipEventListenerList.contains(listener)) {
sipEventListenerList.add(listener);
}
}
public SipManagerState getSipManagerState() {
return sipManagerState;
}
public HashMap<String, String> getCustomHeaders() {
return customHeaders;
}
public void setCustomHeaders(HashMap<String, String> customHeaders) {
this.customHeaders = customHeaders;
}
// *** Client API (used by DeviceImpl) *** //
// Accept incoming call
public void AcceptCall(final int port) {
if (currentServerTransaction == null)
return;
Thread thread = new Thread() {
public void run() {
try {
SIPMessage sm = (SIPMessage) currentServerTransaction.getRequest();
Response responseOK = messageFactory.createResponse(
Response.OK, currentServerTransaction.getRequest());
Address address = createContactAddress();
ContactHeader contactHeader = headerFactory.createContactHeader(address);
responseOK.addHeader(contactHeader);
ToHeader toHeader = (ToHeader) responseOK.getHeader(ToHeader.NAME);
toHeader.setTag("4321"); // Application is supposed to set.
responseOK.addHeader(contactHeader);
/*
* SdpFactory sdpFactory = SdpFactory.getInstance();
* SessionDescription sdp = null; long sessionID =
* System.currentTimeMillis() & 0xffffff; long
* sessionVersion = sessionID; String networkType =
* Connect
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
Java基于移动端的智能养老产品数据收集和分析平台源码(毕业设计).zip 【项目介绍】 该项目是个人毕设项目,答辩评审分达到95分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。 该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。 项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。 基于移动端的智能养老产品数据收集和分析平台(Android客户端—老人端) 完成数据库建立及用于Android的数据库Adapter编写; 完成前端框架构建;
资源推荐
资源详情
资源评论
收起资源包目录
Java基于移动端的智能养老产品数据收集和分析平台源码(毕业设计).zip (144个子文件)
gradlew.bat 2KB
.gitignore 208B
.gitignore 6B
build.gradle 2KB
build.gradle 573B
settings.gradle 46B
gradlew 5KB
android-jain-sip-ri-1.2.228.jar 1.04MB
mysql-connector-java-5.1.47.jar 984KB
log4j-1.2.15.jar 383KB
concurrent.jar 168KB
junit-3.8.1.jar 118KB
gradle-wrapper.jar 53KB
jakarta-regexp-1.3.jar 25KB
android-logging-log4j-1.0.3.jar 7KB
SipManager.java 31KB
BluetoothChatService.java 18KB
DBAdapter.java 16KB
WiFiServiceDiscoveryActivity.java 15KB
connViaBluetooth.java 15KB
SipRequestMsgBuilder.java 12KB
ChatActivity.java 8KB
AboutFragment.java 8KB
DeviceImpl.java 8KB
UpdateActivity.java 6KB
Invite.java 6KB
LoginActivity.java 5KB
ChatManager.java 4KB
ContactFragment.java 4KB
WiFiChatFragment.java 4KB
addDevice.java 4KB
HealthFragment.java 4KB
WiFiDirectServicesList.java 4KB
RegisterActivity.java 3KB
Message.java 3KB
WiFiDirectBroadcastReceiver.java 3KB
Register.java 3KB
SipProfile.java 3KB
ModifyUI.java 3KB
MainActivity.java 2KB
IncomingCall.java 2KB
UserInfo.java 2KB
RC4.java 2KB
SoundManager.java 2KB
GroupOwnerSocketHandler.java 2KB
SipManagerState.java 2KB
SmartdevFragment.java 2KB
IDevice.java 1KB
SipUAConnectionListener.java 1KB
ClientSocketHandler.java 1KB
SipUADeviceListener.java 1KB
DataInfo.java 1KB
DBOpenHelper.java 929B
SipEvent.java 790B
ExampleInstrumentedTest.java 754B
AccountManagerImpl.java 697B
UserCredentialsImpl.java 685B
Constants.java 647B
NotifyMessage.java 575B
ContactViewModel.java 461B
SmartdevViewModel.java 459B
AboutViewModel.java 455B
SettingsActivity.java 451B
HealthViewModel.java 440B
Sipserver.java 397B
NotInitializedException.java 393B
ISipManager.java 392B
ExampleUnitTest.java 381B
MessageProcessor.java 329B
ISipEventListener.java 281B
WiFiP2pService.java 269B
说明.md 199B
ic_launcher_round.png 16KB
logo.png 13KB
ic_launcher_round.png 12KB
ic_launcher.png 10KB
ic_launcher.png 8KB
ic_launcher_round.png 7KB
ic_launcher_round.png 5KB
hangup.png 5KB
dial.png 5KB
ic_launcher.png 5KB
ic_launcher.png 4KB
ic_launcher_round.png 3KB
ic_launcher.png 3KB
proguard-rules.pro 750B
gradle.properties 1KB
gradle-wrapper.properties 232B
fragment_about.xml 18KB
update.xml 10KB
fragment_health.xml 9KB
fragment_smartdev.xml 6KB
ic_launcher_background.xml 5KB
fragment_contact.xml 5KB
register.xml 5KB
activity_add_device.xml 4KB
login.xml 4KB
activity_conn_via_bluetooth.xml 4KB
activity_chat.xml 3KB
Project.xml 3KB
共 144 条
- 1
- 2
资源评论
z同学的编程之路
- 粉丝: 2343
- 资源: 2134
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 《班级管理相关类的实现+射击游戏类的实现(Python)》学生实验(项目)报告
- MSI2301-VB一款SOT23封装P-Channel场效应MOS管
- sap-me-complex- assembly-how-to-guide-en
- sap-me-collaboration-how-to-guide-en
- 达梦数据库-备份与还原-国产数据库-DM8备份与还原.pdf
- MP4946-VB一款SOP8封装2个N-Channel场效应MOS管
- sap-me-basic-routing-how-to-guide-en
- 《图书管理系统(Python)》学生实验(项目)报告
- How To Set Up and Use the SAP ME Barcode Scanning Feature
- LMX2594 硬件参考设计
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功