Android APIs
public class

SipManager

extends Object
java.lang.Object
   ↳ android.net.sip.SipManager

Class Overview

Provides APIs for SIP tasks, such as initiating SIP connections, and provides access to related SIP services. This class is the starting point for any SIP actions. You can acquire an instance of it with newInstance().

The APIs in this class allows you to:

Note: Not all Android-powered devices support VOIP calls using SIP. You should always call isVoipSupported() to verify that the device supports VOIP calling and isApiSupported() to verify that the device supports the SIP APIs. Your application must also request the INTERNET and USE_SIP permissions.

Developer Guides

For more information about using SIP, read the Session Initiation Protocol developer guide.

Summary

Constants
String EXTRA_CALL_ID Key to retrieve the call ID from an incoming call intent.
String EXTRA_OFFER_SD Key to retrieve the offered session description from an incoming call intent.
int INCOMING_CALL_RESULT_CODE The result code to be sent back with the incoming call PendingIntent.
Public Methods
void close(String localProfileUri)
Closes the specified profile to not make/receive calls.
SipSession createSipSession(SipProfile localProfile, SipSession.Listener listener)
Creates a SipSession with the specified profile.
static String getCallId(Intent incomingCallIntent)
Gets the call ID from the specified incoming call broadcast intent.
static String getOfferSessionDescription(Intent incomingCallIntent)
Gets the offer session description from the specified incoming call broadcast intent.
SipSession getSessionFor(Intent incomingCallIntent)
Gets the SipSession that handles the incoming call.
static boolean isApiSupported(Context context)
Returns true if the SIP API is supported by the system.
static boolean isIncomingCallIntent(Intent intent)
Checks if the intent is an incoming call broadcast intent.
boolean isOpened(String localProfileUri)
Checks if the specified profile is opened in the SIP service for making and/or receiving calls.
boolean isRegistered(String localProfileUri)
Checks if the SIP service has successfully registered the profile to the SIP provider (specified in the profile) for receiving calls.
static boolean isSipWifiOnly(Context context)
Returns true if SIP is only available on WIFI.
static boolean isVoipSupported(Context context)
Returns true if the system supports SIP-based VOIP API.
SipAudioCall makeAudioCall(String localProfileUri, String peerProfileUri, SipAudioCall.Listener listener, int timeout)
Creates a SipAudioCall to make an audio call.
SipAudioCall makeAudioCall(SipProfile localProfile, SipProfile peerProfile, SipAudioCall.Listener listener, int timeout)
Creates a SipAudioCall to make a call.
static SipManager newInstance(Context context)
Creates a manager instance.
void open(SipProfile localProfile, PendingIntent incomingCallPendingIntent, SipRegistrationListener listener)
Opens the profile for making calls and/or receiving generic SIP calls.
void open(SipProfile localProfile)
Opens the profile for making generic SIP calls.
void register(SipProfile localProfile, int expiryTime, SipRegistrationListener listener)
Manually registers the profile to the corresponding SIP provider for receiving calls.
void setRegistrationListener(String localProfileUri, SipRegistrationListener listener)
Sets the listener to listen to registration events.
SipAudioCall takeAudioCall(Intent incomingCallIntent, SipAudioCall.Listener listener)
Creates a SipAudioCall to take an incoming call.
void unregister(SipProfile localProfile, SipRegistrationListener listener)
Manually unregisters the profile from the corresponding SIP provider for stop receiving further calls.
[Expand]
Inherited Methods
From class java.lang.Object

Constants

public static final String EXTRA_CALL_ID

Added in API level 9

Key to retrieve the call ID from an incoming call intent.

Constant Value: "android:sipCallID"

public static final String EXTRA_OFFER_SD

Added in API level 9

Key to retrieve the offered session description from an incoming call intent.

Constant Value: "android:sipOfferSD"

public static final int INCOMING_CALL_RESULT_CODE

Added in API level 9

The result code to be sent back with the incoming call PendingIntent.

Constant Value: 101 (0x00000065)

Public Methods

public void close (String localProfileUri)

Added in API level 9

Closes the specified profile to not make/receive calls. All the resources that were allocated to the profile are also released.

Parameters
localProfileUri the URI of the profile to close
Throws
SipException if calling the SIP service results in an error

public SipSession createSipSession (SipProfile localProfile, SipSession.Listener listener)

Added in API level 9

Creates a SipSession with the specified profile. Use other methods, if applicable, instead of interacting with SipSession directly.

Parameters
localProfile the SIP profile the session is associated with
listener to listen to SIP session events
Throws
SipException

public static String getCallId (Intent incomingCallIntent)

Added in API level 9

Gets the call ID from the specified incoming call broadcast intent.

Parameters
incomingCallIntent the incoming call broadcast intent
Returns
  • the call ID or null if the intent does not contain it

public static String getOfferSessionDescription (Intent incomingCallIntent)

Added in API level 9

Gets the offer session description from the specified incoming call broadcast intent.

Parameters
incomingCallIntent the incoming call broadcast intent
Returns
  • the offer session description or null if the intent does not have it

public SipSession getSessionFor (Intent incomingCallIntent)

Added in API level 9

Gets the SipSession that handles the incoming call. For audio calls, consider to use SipAudioCall to handle the incoming call. See takeAudioCall(Intent, SipAudioCall.Listener). Note that the method may be called only once for the same intent. For subsequent calls on the same intent, the method returns null.

Parameters
incomingCallIntent the incoming call broadcast intent
Returns
  • the session object that handles the incoming call
Throws
SipException

public static boolean isApiSupported (Context context)

Added in API level 9

Returns true if the SIP API is supported by the system.

public static boolean isIncomingCallIntent (Intent intent)

Added in API level 9

Checks if the intent is an incoming call broadcast intent.

Parameters
intent the intent in question
Returns
  • true if the intent is an incoming call broadcast intent

public boolean isOpened (String localProfileUri)

Added in API level 9

Checks if the specified profile is opened in the SIP service for making and/or receiving calls.

Parameters
localProfileUri the URI of the profile in question
Returns
  • true if the profile is enabled to receive calls
Throws
SipException if calling the SIP service results in an error

public boolean isRegistered (String localProfileUri)

Added in API level 9

Checks if the SIP service has successfully registered the profile to the SIP provider (specified in the profile) for receiving calls. Returning true from this method also implies the profile is opened (isOpened(String)).

Parameters
localProfileUri the URI of the profile in question
Returns
  • true if the profile is registered to the SIP provider; false if the profile has not been opened in the SIP service or the SIP service has not yet successfully registered the profile to the SIP provider
Throws
SipException if calling the SIP service results in an error

public static boolean isSipWifiOnly (Context context)

Added in API level 9

Returns true if SIP is only available on WIFI.

public static boolean isVoipSupported (Context context)

Added in API level 9

Returns true if the system supports SIP-based VOIP API.

public SipAudioCall makeAudioCall (String localProfileUri, String peerProfileUri, SipAudioCall.Listener listener, int timeout)

Added in API level 9

Creates a SipAudioCall to make an audio call. The attempt will be timed out if the call is not established within timeout seconds and onError(SipAudioCall, SipErrorCode.TIME_OUT, String) will be called.

Parameters
localProfileUri URI of the SIP profile to make the call from
peerProfileUri URI of the SIP profile to make the call to
listener to listen to the call events from SipAudioCall; can be null
timeout the timeout value in seconds. Default value (defined by SIP protocol) is used if timeout is zero or negative.
Returns
Throws
SipException if calling the SIP service results in an error or VOIP API is not supported by the device

public SipAudioCall makeAudioCall (SipProfile localProfile, SipProfile peerProfile, SipAudioCall.Listener listener, int timeout)

Added in API level 9

Creates a SipAudioCall to make a call. The attempt will be timed out if the call is not established within timeout seconds and onError(SipAudioCall, SipErrorCode.TIME_OUT, String) will be called.

Parameters
localProfile the SIP profile to make the call from
peerProfile the SIP profile to make the call to
listener to listen to the call events from SipAudioCall; can be null
timeout the timeout value in seconds. Default value (defined by SIP protocol) is used if timeout is zero or negative.
Returns
Throws
SipException if calling the SIP service results in an error or VOIP API is not supported by the device

public static SipManager newInstance (Context context)

Added in API level 9

Creates a manager instance. Returns null if SIP API is not supported.

Parameters
context application context for creating the manager object
Returns
  • the manager instance or null if SIP API is not supported

public void open (SipProfile localProfile, PendingIntent incomingCallPendingIntent, SipRegistrationListener listener)

Added in API level 9

Opens the profile for making calls and/or receiving generic SIP calls. The caller may make subsequent calls through makeAudioCall(SipProfile, SipProfile, SipAudioCall.Listener, int). If the auto-registration option is enabled in the profile, the SIP service will register the profile to the corresponding SIP provider periodically in order to receive calls from the provider. When the SIP service receives a new call, it will send out an intent with the provided action string. The intent contains a call ID extra and an offer session description string extra. Use getCallId(Intent) and getOfferSessionDescription(Intent) to retrieve those extras.

Parameters
localProfile the SIP profile to receive incoming calls for
incomingCallPendingIntent When an incoming call is received, the SIP service will call send(Context, int, Intent) to send back the intent to the caller with INCOMING_CALL_RESULT_CODE as the result code and the intent to fill in the call ID and session description information. It cannot be null.
listener to listen to registration events; can be null
Throws
NullPointerException if incomingCallPendingIntent is null
SipException if the profile contains incorrect settings or calling the SIP service results in an error

public void open (SipProfile localProfile)

Added in API level 9

Opens the profile for making generic SIP calls. The caller may make subsequent calls through makeAudioCall(SipProfile, SipProfile, SipAudioCall.Listener, int). If one also wants to receive calls on the profile, use open(SipProfile, PendingIntent, SipRegistrationListener) instead.

Parameters
localProfile the SIP profile to make calls from
Throws
SipException if the profile contains incorrect settings or calling the SIP service results in an error

public void register (SipProfile localProfile, int expiryTime, SipRegistrationListener listener)

Added in API level 9

Manually registers the profile to the corresponding SIP provider for receiving calls. open(SipProfile, PendingIntent, SipRegistrationListener) is still needed to be called at least once in order for the SIP service to notify the caller with the PendingIntent when an incoming call is received.

Parameters
localProfile the SIP profile to register with
expiryTime registration expiration time (in seconds)
listener to listen to the registration events
Throws
SipException if calling the SIP service results in an error

public void setRegistrationListener (String localProfileUri, SipRegistrationListener listener)

Added in API level 9

Sets the listener to listen to registration events. No effect if the profile has not been opened to receive calls (see open(SipProfile, PendingIntent, SipRegistrationListener)).

Parameters
localProfileUri the URI of the profile
listener to listen to registration events; can be null
Throws
SipException if calling the SIP service results in an error

public SipAudioCall takeAudioCall (Intent incomingCallIntent, SipAudioCall.Listener listener)

Added in API level 9

Creates a SipAudioCall to take an incoming call. Before the call is returned, the listener will receive a onRinging(SipAudioCall, SipProfile) callback.

Parameters
incomingCallIntent the incoming call broadcast intent
listener to listen to the call events from SipAudioCall; can be null
Returns
Throws
SipException if calling the SIP service results in an error

public void unregister (SipProfile localProfile, SipRegistrationListener listener)

Added in API level 9

Manually unregisters the profile from the corresponding SIP provider for stop receiving further calls. This may interference with the auto registration process in the SIP service if the auto-registration option in the profile is enabled.

Parameters
localProfile the SIP profile to register with
listener to listen to the registration events
Throws
SipException if calling the SIP service results in an error