Android2.3 Sip简单分析

sip在sdk中有三个目录:、net、;
以下是针对net目录下Sip的分析:
net目录包含九个目标文件(tion、、、、、、ner、、) 。
public class SipErrorCode 该类定义了Sip错误代码 , 定义如下:/** Not an error. 未定义错误 */public static final int NO_ERROR = 0;/** When some socket error occurs. 当一些发生套接字错误 。*/public static final int SOCKET_ERROR = -1;/** When server responds with an error. 当服务器响应一个错误 。*/public static final int SERVER_ERROR = -2;/** When transaction is terminated unexpectedly. 当交易被意外终止 。*/public static final int TRANSACTION_TERMINTED = -3;/** When some error occurs on the device, possibly due to a bug. 当一些错误发生在设备上 , 这可能是由于一个错误 。*/public static final int CLIENT_ERROR = -4;/** When the transaction gets timed out. 当事务被超时 。*/public static final int TIME_OUT = -5;/** When the remote URI is not valid. 当远程URI是无效的 。*/public static final int INVALID_REMOTE_URI = -6;/** When the peer is not reachable. 当对端不可达 。*/public static final int PEER_NOT_REACHABLE = -7;/** When invalid credentials are provided. 当无效的凭证 。*/public static final int INVALID_CREDENTIALS = -8;/** The client is in a transaction and cannot initiate a new one. 客户在交易中不能启动一个新的 。*/public static final int IN_PROGRESS = -9;/** When data connection is lost. 当数据连接丢失 。*/public static final int DATA_CONNECTION_LOST = -10;/** Cross-domain authentication required. 跨域认证 。*/public static final int CROSS_DOMAIN_AUTHENTICATION = -11;/** When the server is not reachable. 当服务器不可达 。*/public static final int SERVER_UNREACHABLE = -12;public interface SipRegistrationListener SIP注册事件监听器该类包含了三个回调函数:void onRegistering(String localProfileUri)发送的注册请求时调用void onRegistrationDone(String localProfileUri, long expiryTime)注册成功时调用onRegistrationFailed(String localProfileUri, int errorCode, String errorMessage) 注册失败时调用public class SipException extends Exception表示一般的SIP相关的异常 。public class SipSessionAdapter extends ISipSessionListener.Stub会话适配器类 会话监听该类定义了一些通话事件 , 如下:public void onCalling(ISipSession session) { // 正通话中}public void onRinging(ISipSession session, SipProfile caller, String sessionDescription) { // 响铃}public void onRingingBack(ISipSession session) {}public void onCallEstablished(ISipSession session, String sessionDescription) { //建立通话}public void onCallEnded(ISipSession session) { //通话结束}public void onCallBusy(ISipSession session) { //通话忙}public void onCallTransferring(ISipSession session, String sessionDescription) { //呼叫转移}public void onCallChangeFailed(ISipSession session, int errorCode, String message) { //打电话失败}public void onError(ISipSession session, int errorCode, String message) {//错误}public void onRegistering(ISipSession session) { //正在注册}public void onRegistrationDone(ISipSession session, int duration) { //注册完成}public void onRegistrationFailed(ISipSession session, int errorCode, String message) { //注册失败}public void onRegistrationTimeout(ISipSession session) { //注册超时}public class SipProfile implements Parcelable, Serializable, Cloneable定义一个SIP配置文件包括一个SIP帐户、传输协议、端口、密码、文件、id、域和服务器等的信息!public static class Builder辅助类 , 辅助构造一个SIP配置文件public final class SipSessionSip会话信息该类中定义了一个状态类State( , 如“注册” , “呼出” , 和“呼叫) 定义如下:/** When session is ready to initiate a call or transaction. 当会话已准备好发起呼叫或交易 。*/public static final int READY_TO_CALL = 0;/** When the registration request is sent out. 当注册请求被发送出去 。*/public static final int REGISTERING = 1;/** When the unregistration request is sent out. 当注销请求发送出去 。*/public static final int DEREGISTERING = 2;/** When an INVITE request is received. 当INVITE请求被接受 。*/public static final int INCOMING_CALL = 3;/** When an OK response is sent for the INVITE request received. * 当一个OK响应发送的INVITE请求 。*/public static final int INCOMING_CALL_ANSWERING = 4;/** When an INVITE request is sent.* 当INVITE请求被发送 。*/public static final int OUTGOING_CALL = 5;/** When a RINGING response is received for the INVITE request sent.* RINGING响应当接收到发送的INVITE请求 。*/public static final int OUTGOING_CALL_RING_BACK = 6;/** When a CANCEL request is sent for the INVITE request sent.* 当一个CANCEL请求被发送的INVITE请求发送 。*/public static final int OUTGOING_CALL_CANCELING = 7;/** When a call is established. 当一个呼叫建立 。*/public static final int IN_CALL = 8;/** When an OPTIONS request is sent. 当一个OPTIONS请求被发送 。*/public static final int PINGING = 9;/** When ending a call. @hide 结束一个呼叫时*/public static final int ENDING_CALL = 10;/** Not defined. 没有定义*/public static final int NOT_DEFINED = 101;还定义了一个监听类Listener 一个SIP会话有关的事件 如下:public void onCalling(SipSession session) 当INVITE请求被发送到发起新的呼叫调用public void onRinging(SipSession session, SipProfile caller,String sessionDescription) 收到INVITE请求时调用public void onRingingBack(SipSession session) RINGING收到响应发送的INVITE请求时 , 调用public void onCallEstablished(SipSession session,String sessionDescription) 在会话建立时调用public void onCallEnded(SipSession session)在会话终止时调用public void onCallBusy(SipSession session)所谓同行是忙时会话初始化过程中public void onCallTransferring(SipSession newSession,String sessionDescription) 呼叫时 , 呼叫被转移到一个新的public void onError(SipSession session, int errorCode,String errorMessage) 会话初始化和终止过程中发生错误时调用public void onCallChangeFailed(SipSession session, int errorCode,String errorMessage) 更改会话协商过程中发生错误时调用public void onRegistering(SipSession session)发送的注册请求时调用public void onRegistrationDone(SipSession session, int duration) 注册成功完成时调用public void onRegistrationFailed(SipSession session, int errorCode,String errorMessage) 注册失败时调用public void onRegistrationTimeout(SipSession session)登记被超时时调用会话过程中 , 定义了一些回调如:private ISipSessionListener createListener()public class SimpleSessionDescription 使用的对象来处理消息的会话描述协议(SDP) 。它主要是设计用于的会话发起协议(SIP)的用途 。该类中还定义了Media 表示一个媒体描述 , 会话描述(类型、端口、协议、格式、解码/编码)!public class SipAudioCall 处理SIP的互联网音频呼叫public class SipManager 提供了API , SIP的任务 , 如启动SIP连接 , 并提供相关的SIP服务的访问 。如下方法:public static boolean isApiSupported(Context context)系统是否支持SIP APIpublic static boolean isVoipSupported(Context context)系统是否支持基于SIP协议的VOIP APIpublic static boolean isSipWifiOnly(Context context)SIP是否仅适用于WIFIpublic SipAudioCall makeAudioCall(SipProfile localProfile, SipProfile peerProfile, SipAudioCall.Listener listener, int timeout)创建一个拨打电话public SipAudioCall takeAudioCall(Intent incomingCallIntent,SipAudioCall.Listener listener)创建一个接听来电public static boolean isIncomingCallIntent(Intent intent)如果目的是检查呼入广播意图public static String getOfferSessionDescription(Intent incomingCallIntent)从指定的来电广播意图获取提供会话描述public void register(SipProfile localProfile, int expiryTime,SipRegistrationListener listener) 手动注册的配置文件 , 相应的SIP提供商接听电话 。public void unregister(SipProfile localProfile,SipRegistrationListener listener)手动注销相应的SIP为进一步呼吁停止接收供应商的档案 , 这可能会干扰自动注册的SIP服务??的过程中 , 如果在配置文件中启用了自动注册选项 。内部含有:private static class ListenerRelay extends SipSessionAdapter 类负责监听注册过程的回调!