User Manual for Android
FAQ
Where can I download the PortSIP VoIP SDK for testing?
You can download the PortSIP VoIP SDK and sample projects from the PortSIP Website.
What Android API version is required?
The PortSIP VoIP SDK requires Android API version 16 or later.
How can I create a new project with the PortSIP VoIP SDK?
Download the Sample Project and SDK: Obtain the sample project and trial SDK from the PortSIP Website and extract them to a desired directory.
Create a New Project: In Android Studio, create a new Android Application project.
Add the SDK Libraries: Copy all files from the
libs
directory of the extracted SDK to thelibs
directory of your new application.Import Necessary Classes: Import the required classes from the SDK:
How can I process callback events?
Implement the OnPortSIPEvent Interface: Your class should implement the
OnPortSIPEvent
interface to handle callback events.Override Callback Methods: Override the necessary callback methods (e.g.,
onRegistrationState
,onCallState
) to handle specific events.
How do I initialize the SDK?
Create an Instance: Create an instance of the
PortSipSdk
class.Set the Event Listener: Set the event listener using
setOnPortSIPEvent
.Create a Call Manager: Create a call manager using
CreateCallManager
.Initialize the SDK: Call the
initialize
method with appropriate parameters.
Is the SDK thread-safe?
Yes, the PortSIP SDK is thread-safe. You can call API functions from multiple threads without worrying about synchronization issues. However, there are exceptions: the onAudioRawCallback
, onVideoRawCallback
, and onRTPPacketCallback
callbacks should not be called directly from other threads.
SDK Callback events
Register events
When successfully registered to server, this event will be triggered.
Parameters
reason | The status text. |
code | The status code. |
sipMessage | The SIP message received. |
When failed to register to SIP server, this event will be triggered.
Parameters
reason | The status text. |
code | The status code. |
sipMessage | The SIP message received. |
Call events
When a call is coming, this event will be triggered.
Parameters
sessionId | The session ID of the call. |
callerDisplayNam e | The display name of caller |
caller | The caller. |
calleeDisplayNam e | The display name of callee. |
callee | The callee. |
audioCodecs | The matched audio codecs. It's separated by "#" if there are more than one codecs. |
videoCodecs | The matched video codecs. It's separated by "#" if there are more than one codecs. |
existsAudio | By setting to true, it means that this call include the audio. |
existsVideo | By setting to true, it means that this call include the video. |
sipMessage | The SIP message received. |
If the outgoing call is being processed, this event will be triggered.
Parameters
sessionId | The session ID of the call. |
Once the caller received the "183 session progress" message, this event would be triggered.
Parameters
sessionId | The session ID of the call. |
audioCodecs | The matched audio codecs. It's separated by "#" if there are more than one codecs. |
videoCodecs | The matched video codecs. It's separated by "#" if there are more than one codecs. |
existsEarlyMedia | By setting to true it means the call has early media. |
existsAudio | By setting to true it means this call include the audio. |
existsVideo | By setting to true it means this call include the video. |
sipMessage | The SIP message received. |
If the outgoing call is ringing, this event will be triggered.
Parameters
sessionId | The session ID of the call. |
statusText | The status text. |
statusCode | The status code. |
sipMessage | The SIP message received. |
If the remote party answered the call, this event would be triggered.
Parameters
sessionId | The session ID of the call. |
callerDisplayNam e | The display name of caller |
caller | The caller. |
calleeDisplayNam e | The display name of callee. |
callee | The callee. |
audioCodecs | The matched audio codecs. It's separated by "#" if there are more than one codecs. |
videoCodecs | The matched video codecs. It's separated by "#" if there are more than one codecs. |
existsAudio | By setting to true, this call includes the audio. |
existsVideo | By setting to true, this call includes the video. |
sipMessage | The SIP message received. |
This event will be triggered if the outgoing or incoming call fails.
Parameters
sessionId | The session ID of the call. |
callerDisplayNam e | The display name of caller l |
caller | The caller. l |
calleeDisplayNam e | The display name of callee. l |
callee | The callee. |
reason | The failure reason. |
code | The failure code. |
sipMessage | The SIP message received. |
This event will be triggered when remote party updates the call.
Parameters
sessionId | The session ID of the call. |
audioCodecs | The matched audio codecs. It's separated by "#" if there are more than one codecs. |
videoCodecs | The matched video codecs. It's separated by "#" if there are more than one codecs. |
screenCodecs | The matched screen codecs. It's separated by "#" if there are more than one codecs. |
existsAudio | By setting to true, this call includes the audio. |
existsVideo | By setting to true, this call includes the video. |
existsScreen | By setting to true, this call includes the screen shared. |
sipMessage | The SIP message received. |
This event will be triggered when UAC sent/UAS received ACK (the call is connected). Some functions (hold, updateCall etc...) can be called only after the call connected, otherwise the functions will return error.
Parameters
sessionId | The session ID of the call. |
If the enableCallForward method is called and a call is incoming, the call will be forwarded automatically and this event will be triggered.
Parameters
forwardTo | The target SIP URI of the call forwarding. |
This event is triggered once remote side ends the call.
Parameters
sessionId | The session ID of the call. |
sipMessage | The SIP message received. |
If a user subscribed and his dialog status monitored, when the monitored user is holding a call or is being rang, this event will be triggered.
Parameters
BLFMonitoredUri | the monitored user's URI |
BLFDialogState | - the status of the call |
BLFDialogId | - the id of the call |
BLFDialogDirecti on | - the direction of the call |
If the remote side places the call on hold, this event will be triggered.
Parameters
sessionId | The session ID of the call. |
If the remote side un-holds the call, this event will be triggered Parameters
sessionId | The session ID of the call. |
audioCodecs | The matched audio codecs. It's separated by "#" if there are more than one codec. |
videoCodecs | The matched video codecs. It's separated by "#" if there are more than one codec. |
existsAudio | By setting to true, this call includes the audio. |
existsVideo | By setting to true, this call includes the video. |
Refer events
This event will be triggered once received a REFER message.
Parameters
sessionId | The session ID of the call. |
referId | The ID of the REFER message. Pass it to acceptRefer or rejectRefer |
to | The refer target. |
from | The sender of REFER message. |
referSipMessage | The SIP message of "REFER". Pass it to "acceptRefer" function. |
This callback will be triggered once remote side calls "acceptRefer" to accept the REFER Parameters
sessionId | The session ID of the call. |
This callback will be triggered once remote side calls "rejectRefer" to reject the REFER Parameters
sessionId | The session ID of the call. |
reason | Reject reason. |
code | Reject code. |
When the refer call is being processed, this event will be triggered.
Parameters
sessionId | The session ID of the call. |
When the refer call is ringing, this event will be triggered.
Parameters
sessionId | The session ID of the call. |
When the refer call succeeds, this event will be triggered. The ACTV means Active. For example, A establishes the call with B, A transfers B to C, C accepts the refer call, and A will receive this event.
Parameters
sessionId | The session ID of the call. |
When the refer call fails, this event will be triggered. The ACTV means Active. For example, A establish the call with B, A transfers B to C, C rejects this refer call, and A will receive this event.
Parameters
sessionId | The session ID of the call. |
reason | The error reason. |
code | The error code. |
Signaling events
This event will be triggered when receiving a SIP message. This event is disabled by default. To enable, use enableCallbackSignaling.
Parameters
sessionId | The session ID of the call. |
message | The received SIP message. |
This event will be triggered when sent a SIP message. This event is disabled by default. To enable, use enableCallbackSignaling.
Parameters
sessionId | The session ID of the call. |
message | The sent SIP message. |
MWI events
If there is the waiting voice message (MWI), this event will be triggered.
Parameters
messageAccount | Voice message account |
urgentNewMessag eCount | Count of new urgent messages. |
urgentOldMessage Count | Count of history urgent message. |
newMessageCount | Count of new messages. |
oldMessageCount | Count of history messages. |
If there is waiting fax message (MWI), this event will be triggered.
Parameters
messageAccount | Fax message account |
urgentNewMessag eCount | Count of new urgent messages. |
urgentOldMessage Count | Count of history urgent messages. |
newMessageCount | Count of new messages. |
oldMessageCount | Count of old messages. |
DTMF events
This event will be triggered when receiving a DTMF tone from remote side.
Parameters
sessionId | Session ID of the call. | ||
tone | |||
code | Description | ||
0 | The DTMF tone 0. | ||
1 | The DTMF tone 1. | ||
2 | The DTMF tone 2. | ||
3 | The DTMF tone 3. | ||
4 | The DTMF tone 4. | ||
5 | The DTMF tone 5. | ||
6 | The DTMF tone 6. | ||
7 | The DTMF tone 7. | ||
8 | The DTMF tone 8. | ||
9 | The DTMF tone 9. | ||
10 | The DTMF tone *. | ||
11 | The DTMF tone #. | ||
12 | The DTMF tone A. | ||
13 | The DTMF tone B. | ||
14 | The DTMF tone C. | ||
15 | The DTMF tone D. | ||
16 | The DTMF tone FLASH. |
INFO/OPTIONS message events
This event will be triggered when receiving the OPTIONS message.
Parameters
optionsMessage | The received whole OPTIONS message in text format. |
This event will be triggered when receiving the INFO message.
Parameters
infoMessage | The whole INFO message received in text format. |
This event will be triggered when receiving a NOTIFY message of the subscription.
Parameters
subscribeId | The ID of SUBSCRIBE request. |
notifyMessage | The received INFO message in text format. |
messageData | The received message body. It's can be either text or binary data. |
messageDataLengt h | The length of "messageData". |
Presence events
This event will be triggered when receiving the SUBSCRIBE request from a contact.
Parameters
subscribeId | The ID of SUBSCRIBE request. |
fromDisplayName | The display name of contact. |
from | The contact who sends the SUBSCRIBE request. |
subject | The subject of the SUBSCRIBE request. |
When the contact is online or changes presence status, this event will be triggered.
Parameters
fromDisplayName | The display name of contact. |
from | The contact who sends the SUBSCRIBE request. |
stateText | The presence status text. |
When the contact is offline, this event will be triggered.
Parameters
fromDisplayName | The display name of contact. |
from | The contact who sends the SUBSCRIBE request |
This event will be triggered when receiving a MESSAGE message in dialog.
Parameters
sessionId | The session ID of the call. |
mimeType | The message mime type. |
subMimeType | The message sub mime type. |
messageData | The received message body. It can be text or binary data. Use the mimeType and subMimeType to differentiate them. For example, if the mimeType is "text" and subMimeType is "plain", "messageData" is text message body. If the mimeType is "application" and subMimeType is "vnd.3gpp.sms", "messageData" is binary message body. |
messageDataLengt h | The length of "messageData". |
This event will be triggered when receiving a MESSAGE message out of dialog. For example pager message.
Parameters
fromDisplayName | The display name of sender. |
from | The message sender. |
toDisplayName | The display name of receiver. |
to | The receiver. |
mimeType | The message mime type. |
subMimeType | The message sub mime type. |
messageData | The received message body. It can be text or binary data. Use the mimeType and subMimeType to differentiate them. For example, if the mimeType is "text" and subMimeType is "plain", "messageData" is text message body. If the mimeType is "application" and subMimeType is "vnd.3gpp.sms", "messageData" is binary message body. |
messageDataLengt h | The length of "messageData". |
sipMessage | The SIP message received. |
If the message is sent successfully in dialog, this event will be triggered.
Parameters
sessionId | The session ID of the call. |
messageId | The message ID. It's equal to the return value of sendMessage function. |
sipMessage | The SIP message received. |
If the message is failed to be sent out of dialog, this event will be triggered.
Parameters
sessionId | The session ID of the call. |
messageId | The message ID. It's equal to the return value of sendMessage function. |
reason | The failure reason. |
code | Failure code. |
sipMessage | The SIP message received. |
If the message is sent successfully out of dialog, this event will be triggered.
Parameters
messageId | The message ID. It's equal to the return value of SendOutOfDialogMessage function. |
fromDisplayName | The display name of message sender. |
from | The message sender. |
toDisplayName | The display name of message receiver. |
to | The message receiver. |
sipMessage | The SIP message received. |
If the message failed to be sent out of dialog, this event would be triggered.
Parameters
messageId | The message ID. It's equal to the return value of SendOutOfDialogMessage function. |
fromDisplayName | The display name of message sender |
from | The message sender. |
toDisplayName | The display name of message receiver. |
to | The message receiver. |
reason | The failure reason. |
code | The failure code. |
sipMessage | The SIP message received. |
This event will be triggered on sending SUBSCRIBE failure.
Parameters
subscribeId | The ID of SUBSCRIBE request. |
statusCode | The status code. |
This event will be triggered when a SUBSCRIPTION is terminated or expired.
Parameters
subscribeId | The ID of SUBSCRIBE request. |
audio device changed,Play audio and video file finished events
If called startPlayingFileToRemote function with no loop mode, this event will be triggered once the file play finished.
Parameters
sessionId | The session ID of the call. |
fileName | The play file name. |
If called getStatistics function, this event will be triggered once the statistics get finished.
Parameters
sessionId | The session ID of the call. |
statistics | The session call statistics. |
fired When available audio devices changed or audio device currently in use changed.
Parameters
audioDevice | device currently in use |
devices | devices useable. If a wired headset is connected, it should be the only possible option. When no wired headset connected, the devices set may contain speaker, earpiece, Bluetooth devices. can be set by PortSipSdk#setAudioDevice to switch to current device. |
fired when the audio focus has been changed.
Parameters
focusChange | the type of focus change, one of AudioManager::AUDIOFOCUS_GAIN, AudioManager::AUDIOFOCUS_LOSS, AudioManager::AUDIOFOCUS_LOSS_TRANSIENT and AudioManager::AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK. |
RTP callback events
If enableRtpCallback function is called to enable the RTP callback, this event will be triggered once a RTP packet is received or sent.
Parameters
sessionId | The session ID of the call. |
mediaType | RTP packet media type, 0 for audio, 1 for video , 2 for screen. |
enum_direction | RTP packet direction enum_DIRECTION_SEND, enum_DIRECTION_RECV. |
RTPPacket | The received or sent RTP packet. |
packetSize | The size of the RTP packet in bytes. |
Remarks
Donot call any SDK API functions in this event directly. If you want to call the API functions or other code which is time-consuming, you should post a message to another thread and execute SDK API functions or other code in another thread.
This event will be triggered once receiving the audio packets if called enableAudioStreamCallback function.
Parameters
sessionId | The session ID of the call. |
enum_direction | The type passed in enableAudioStreamCallback function. Below types allowed: enum_DIRECTION_SEND, enum_DIRECTION_RECV. |
data | The memory of audio stream. It's in PCM format. |
dataLength | The data size. |
samplingFreqHz | The audio stream sample in HZ. For example, 8000 or 16000. |
Remarks
Don't call any SDK API functions in this event directly. If you want to call the API functions or other code which is time-consuming, you should post a message to another thread and execute SDK API functions or other code in another thread.
See also
PortSipSdk::enableAudioStreamCallback
This event will be triggered once receiving the video packets if enableVideoStreamCallback function is called.
Parameters
sessionId | The session ID of the call. |
enum_direction | The type which is passed in enableVideoStreamCallback function. Below types allowed: enum_DIRECTION_SEND, enum_DIRECTION_RECV. |
width | The width of video image. |
height | The height of video image. |
data | The memory of video stream. It's in YUV420 format, YV12. |
dataLength | The data size. |
See also
PortSipSdk::enableVideoStreamCallback
SDK functions*
Initialize and register functions
Initialize the SDK.
Parameters
enum_transport | Transport for SIP signaling, which can be set as: ENUM_TRANSPORT_UDP, ENUM_TRANSPORT_TCP, ENUM_TRANSPORT_TLS, |
localIP | The local PC IP address (for example: 192.168.1.108). It will be used for sending and receiving SIP messages and RTP packets. ` `If the local IP is provided in IPv6 format, the SDK will use IPv6. ` `If you want the SDK to choose correct network interface (IP) automatically, please use "0.0.0.0" for IPv4, or "::" for IPv6. |
localSIPPort | The listening port for SIP message transmission, for example 5060. |
enum_LogLevel | Set the application log level. The SDK will generate "PortSIP_Log_datatime.log" file if the log is enabled. ENUM_LOG_LEVEL_NONE ENUM_LOG_LEVEL_DEBUG |
ENUM_LOG_LEVEL_ERROR ENUM_LOG_LEVEL_WARNING | |
ENUM_LOG_LEVEL_INFO ENUM_LOG_LEVEL_DEBUG | |
LogPath | The path for storing log file. The path (folder) specified MUST be existent. |
maxLines | Theoretically, unlimited count of lines are supported depending on the device capability. For SIP client, it is recommended to limit it as ranging 1 - 100. |
agent | The User-Agent header to be inserted in to SIP messages. |
audioDeviceLayer | Specifies the audio device layer that should be using: 0 = Use the OS defaulted device. |
1 = Virtual device, usually use this for the device that has no sound device installed. | |
videoDeviceLayer | Specifies the video device layer that should be using: 0 = Use the OS defaulted device. 1 = Use Virtual device, usually use this for the device that has no camera installed. |
TLSCertificatesRo otPath | Specify the TLS certificate path, from which the SDK will load the certificates automatically. Note: On Windows, this path will be ignored, and SDK will read the certificates from Windows certificates stored area instead. |
TLSCipherList | Specify the TLS cipher list. This parameter is usually passed as empty so that the SDK will offer all available ciphers. |
verifyTLSCertificate | Indicate if SDK will verify the TLS certificate or not. By setting to false, the SDK will not verify the validity of TLS certificate. |
dnsServers | Additional Nameservers DNS servers. Value null indicates system DNS Server. Multiple servers will be split by ";", e.g "8.8.8.8;8.8.4.4" |
Returns
If the function succeeds, it returns value 0. If the function fails, it will return a specific error code
Un-initialize the SDK and release resources.
Set the instance Id, the outbound instanceId((RFC5626) ) used in contact headers.
Parameters
instanceId | The SIP instance ID. If this function is not called, the SDK will generate an instance ID automatically. The instance ID MUST be unique on the same device (device ID or IMEI ID is recommended). Recommend to call this function to set the ID on Android devices. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Set user account info.
Parameters
userName | Account (username) of the SIP, usually provided by an IP-Telephony service provider. |
displayName | The name displayed. You can set it as your like, such as "James Kend". It's optional. |
authName | Authorization user name (usually equal to the username). |
password | User's password. It's optional. |
userDomain | User domain; this parameter is optional, which allows to transfer an empty string if you are not using the domain. |
SIPServer | SIP proxy server IP or domain, for example xx.xxx.xx.x or sip.xxx.com. |
SIPServerPort | Port of the SIP proxy server, for example 5060. |
STUNServer | Stun server for NAT traversal. It's optional and can be used to transfer empty string to disable STUN. |
STUNServerPort | STUN server port. It will be ignored if the outboundServer is empty. |
outboundServer | Outbound proxy server, for example sip.domain.com. It's optional and allows to transfer an empty string if not using the outbound server. |
outboundServerPort | Outbound proxy server port, it will be ignored if the outboundServer is empty. |
Returns
If this function succeeds, it will return value 0. If it fails, it will return a specific error code.
remove user account info.
Register to SIP proxy server (login to server)
Parameters
expires | Time interval for registration refreshment, in seconds. The maximum of supported value is 3600. It will be inserted into SIP REGISTER message headers. |
retryTimes | The maximum of retry attempts if failed to refresh the registration. By setting to <= 0, the attempt will be disabled and onRegisterFailure callback will be triggered when facing retry failure. |
Returns
If this function succeeds, it will return value 0. If fails, it will return a specific error code.
If the registration to server succeeds, onRegisterSuccess will be triggered; otherwise onRegisterFailure will be triggered.
Refresh the registration manually after successfully registered.
Parameters
expires | Time interval for registration refreshment, in seconds. The maximum of supported value is 3600. It will be inserted into SIP REGISTER message headers. |
Returns
If this function succeeds, it will return value 0. If fails, it will return a specific error code.
If the registration to server succeeds, onRegisterSuccess will be triggered; otherwise onRegisterFailure will be triggered.
Un-register from the SIP proxy server.
Parameters
waitMS | Wait for the server to reply that the un-registration is successful, waitMS is the longest waiting milliseconds, 0 means not waiting. |
Returns
If this function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Set the display name of user.
Parameters
displayName | That will appear in the From/To Header. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Set the license key. It must be called before setUser function.
Parameters
key | The SDK license key. Please purchase from PortSIP. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Audio and video codecs functions
Enable an audio codec, and it will be shown in SDP.
Parameters
enum_audiocodec |
ENUM_AUDIOCODEC_ISACSWB, ENUM_AUDIOCODEC_OPUS, ENUM_AUDIOCODEC_DTMF. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Enable a video codec, and it will be shown in SDP.
Parameters
enum_videocodec | Video codec type. Supported types include enum_VIDEOCODEC_H264, enum_VIDEOCODEC_VP8. enum_VIDEOCODEC_VP9. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Detect if the audio codecs are enabled.
Returns
If no audio codec enabled, it will return value true; otherwise it returns false.
Detect if the video codecs are enabled.
Returns
If no video codec enabled, it will return value true; otherwise it returns false.
Set the RTP payload type for dynamic audio codec.
Parameters
enum_audiocodec | Audio codec type, which is defined in the PortSIPTypes file. |
payloadType | The new RTP payload type that you want to set. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Set the RTP payload type for dynamic video codec.
Parameters
enum_videocodec | Video codec type. Supported types include: enum_VIDEOCODEC_H264, enum_VIDEOCODEC_VP8. enum_VIDEOCODEC_VP9. |
payloadType | The new RTP payload type that you want to set. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Remove all the enabled audio codecs.
Remove all the enabled video codecs.
Set the codec parameter for audio codec.
Parameters
enum_audiocodec | Audio codec type, defined in the PortSIPTypes file. |
sdpParameter | The parameter is in string format. |
- | - |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
See also
PortSipEnumDefine
Remarks
Example:
setAudioCodecParameter(AUDIOCODEC_AMR, "mode-set=0; octet-align=1; robust-sorting=0"![])
Set the codec parameter for video codec.
Parameters
enum_videocodec | Video codec types. Supported types include: enum_VIDEOCODEC_H264, enum_VIDEOCODEC_VP8. enum_VIDEOCODEC_VP9. |
sdpParameter | The parameter is in string format. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Remarks
Example:
setVideoCodecParameter(PortSipEnumDefine.enum_VIDEOCODEC_H264, profile-level-id=420033; packetization-mode=0");
Additional settings functions
Get the version number of the current SDK.
Returns
String with version description
Enable/Disable rport(RFC3581).
Parameters
enable | enable Set to true to enable the SDK to support rport. By default it is enabled. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Enable/disable rport(RFC3581).
Parameters
enable | Set to true to enable the SDK to support rport. By default it is enabled. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code. Enable/Disable Early Media.
Parameters
enable | Set to true to enable the SDK support Early Media. By default the Early Media is disabled. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Enable/disable which allows specifying the preferred protocol when a domain supports
both IPV4 and IPV6 simultaneously.
Parameters
enable | Set to true to enable priority IPv6 Domain. with the default priority being IPV4. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Modifies the default URI user character needs to be escaped.
Parameters
character | The character to be modified, set one character at a time. |
enable | Whether escaping is required, true for allowing escaping, false for disabling escaping. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Enable/Disable PRACK.
Parameters
mode | Modes work as follows: 0 - Never, Disable PRACK,By default the PRACK is disabled. 1 - SupportedEssential, Only send reliable provisionals if sending a body and far end supports. 2 - Supported, Always send reliable provisionals if far end supports. 3 - Required Always send reliable provisionals. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Enable/disable the 3Gpp tags, including "ims.icsi.mmtel" and "g.3gpp.smsip".
Parameters
enable | Set to true to enable 3Gpp tags for SDK. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Enable/disable the callback of the SIP messages.
Parameters
enableSending | Set as true to enable to callback the sent SIP messages, or false to disable. Once enabled, the "onSendingSignaling" event will be triggered when the SDK sends a SIP message. |
enableReceived | Set as true to enable to callback the received SIP messages, or false to disable. Once enabled, the "onReceivedSignaling" event will be triggered when the SDK receives a SIP message. |
Set the SRTP policy.
Parameters
enum_srtppolicy | The SRTP policy.allow: enum_SRTPPOLICY_NONE, enum_SRTPPOLICY _FORCE, enum_SRTPPOLICY_PREFER. |
This function allows to set the RTP port range for audio and video streaming.
Parameters
minimumRtpPort | The minimum RTP port. |
maximumRtpPort | The maximum RTP port. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Remarks
The port range ((max - min) / maxCallLines) should be greater than 4.
Enable call forwarding.
Parameters
forBusyOnly | If this parameter is set to true, the SDK will forward incoming calls when the user is currently busy. If set it to false, SDK will forward all incoming calls. |
forwardTo | The target to which the call will be forwarded. It must be in the format of sip:xxxx@sip.portsip.com. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Disable the call forwarding. The SDK will not forward any incoming call when this function is called.
Returns
If the function succeeds, it will not return value 0. If the function fails, it will return a specific error code.
This function allows to periodically refresh Session Initiation Protocol (SIP) sessions by
sending repeated INVITE requests.
Parameters
timerSeconds | The value of the refresh interval in seconds. A minimum of 90 seconds required. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Remarks
The repeated INVITE requests, or re-INVITEs, are sent during an active call log to allow user agents (UA) or proxies to determine the status of a SIP session. Without this keep-alive mechanism, proxies that remember incoming and outgoing requests (stateful proxies) may continue to retain call state in vain. If a UA fails to send a BYE message at the end of a session, or if the BYE message is lost due to network problems, a stateful proxy will not know that the session has ended. The re-INVITES ensure that active sessions stay active and completed sessions are terminated.
Disable the session timer.
Enable/disable the "Do not disturb" status.
Parameters
state | If it is set to true, the SDK will reject all incoming calls. |
Enable/disable the "Auto Check MWI" status.
Parameters
state | If it is set to true, the SDK will check Mwi automatically. |
Enable or disable to send RTP keep-alive packet when the call is ongoing.
Parameters
state | When it's set to true, it's allowed to send the keep-alive packet during the conversation; |
keepAlivePayload Type | The payload type of the keep-alive RTP packet. It's usually set to 126. |
deltaTransmitTime MS | The interval for sending keep-alive RTP packet, in millisecond. Recommended value ranges 15000 - 300000. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Enable or disable to send SIP keep-alive packet.
Parameters
keepAliveTime | This is the time interval for SIP keep-alive, in seconds. When it is set to 0, the SIP keep-alive will be disabled. Recommended value is 30 or 50. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Set the audio capture sample, which will be present in the SDP of INVITE and 200 OK message as "ptime and "maxptime" attribute.
Parameters
ptime | It should be a multiple of 10 between 10 - 60 (included 10 and 60). |
maxptime | The "maxptime" attribute should be a multiple of 10 between 10 - 60 (included 10 and 60). It can't be less than "ptime". |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Set the SDK to receive SIP messages that include special mime type.
Parameters
methodName | Method name of the SIP message, such as INVITE, OPTION, INFO, MESSAGE, UPDATE, ACK etc. For more details please refer to RFC3261. |
mimeType | The mime type of SIP message. |
subMimeType | The sub mime type of SIP message. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Remarks
In default, PortSIP VoIP SDK supports media types (mime types) included in the below incoming SIP messages:
"message/sipfrag" in NOTIFY message.
"application/simple-message-summary" in NOTIFY message.
"text/plain" in MESSAGE message. "application/dtmf-relay" in INFO message. "application/media_control+xml" in INFO message.
The SDK allows to receive SIP messages that include above mime types. Now if remote side send an INFO SIP message with its "Content-Type" header value "text/plain", SDK will reject this INFO message, because "text/plain" of INFO message is not included in the default type list. How should we enable the SDK to receive SIP INFO messages that include "text/plain" mime type? The answer is addSupportedMimyType:
addSupportedMimeType("INFO", "text", "plain");
If the user wishes to receive the NOTIFY message with "application/media_control+xml", it should be set as below:
addSupportedMimeType("NOTIFY", "application", "media_control+xml");
For more details about the mime type, please visit: http://www.iana.org/assignments/media-types/
Access SIP message header functions
Access the SIP header of SIP message.
Parameters
sipMessage | The SIP message. |
headerName | The header of which user wishes to access the SIP message. |
Returns
String. The SIP header of SIP message.
Add the SIP Message header into the specified outgoing SIP message.
Parameters
sessionId | Add the header to the SIP message with the specified session Id only. By setting to -1, it will be added to all messages. |
methodName | Add the header to the SIP message with specified method name only. For example: "INVITE", "REGISTER", "INFO" etc. If "ALL" specified, it will add all SIP messages. |
msgType | 1 refers to apply to the request message, 2 refers to apply to the response message, 3 refers to apply to both request and response. |
headerName | The header name which will appear in SIP message. |
headerValue | The custom header value. |
Returns
If the function succeeds, it will return the addedSipMessageId , which is greater than 0. If the function fails, it will return a specific error code.
Remove the headers (custom header) added by addSipMessageHeader.
Parameters
addedSipMessageI d | The addedSipMessageId return by addSipMessageHeader. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Clear the added extension headers (custom headers)
Remarks
For example, we have added two custom headers into every outgoing SIP message and want to have them removed.
If this function is called, the added extension headers will no longer appear in outgoing SIP message.
Modify the special SIP header value for every outgoing SIP message.
Parameters
sessionId | The header to the SIP message with the specified session Id. By setting to -1, it will be added to all messages. |
methodName | Modify the header to the SIP message with specified method name only. For example: "INVITE", "REGISTER", "INFO" etc. If "ALL" specified, it will add all SIP messages. |
msgType | 1 refers to apply to the request message, 2 refers to apply to the response message, 3 refers to apply to both request and response. |
headerName | The SIP header name of which the value will be modified. |
headerValue | The heaver value to be modified. |
Returns
If the function succeeds, it will return modifiedSipMessageId, which is greater than 0. If the function fails, it will return a specific error code.
Remarks
Example: modify "Expires" header and "User-Agent" header value for every outgoing SIP message:
modifySipMessageHeader(-1,"ALL",3, "Expires", "1000"); modifySipMessageHeader(-1,"ALL",3, "User-Agent", "MyTest Softphone 1.0");
Remove the headers (custom header) added by modifiedSipMessageId.
Parameters
modifiedSipMessa geId | The modifiedSipMessageId return by modifySipMessageHeader. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Clear the modify headers value. Once cleared, it will no longer modify every outgoing SIP message header values.
Remarks Example: modify two headers value for every outgoing SIP message and then clear it:
Parameters
Audio and video functions
Set the video device that will be used for video call. Parameters
deviceId | Device ID (index) for video device (camera). |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Setting the video Device Orientation.
Parameters
rotation | Device Orientation for video device (camera), e.g 0,90,180,270. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Set enable/disable video Hardware codec.
enableHWEncoder | If it is set to true, the SDK will use video hardware encoder when available. By default it is true. |
enableHWDecoder | If it is set to true, the SDK will use video hardware decoder when available. By default it is true. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Set the video capturing resolution.
Parameters
width | Video resolution, width |
height | Video resolution, height |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Set the audio bitrate. Parameters
sessionId | The session ID of the call. |
enum_audiocodec | Audio codec type allowed: enum_AUDIOCODEC_OPUS |
bitrateKbps | The Audio bitrate in KBPS. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Set the video bitrate.
Parameters
sessionId | The session ID of the call. |
bitrateKbps | The video bitrate in KBPS. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Set the video frame rate. Usually you do not need to call this function to set the frame rate since the SDK uses default frame rate.
Parameters
sessionId | The session ID of the call. |
frameRate | The frame rate value, with its minimum of 5, and maximum value of 30. The greater the value is, the better video quality enabled and more bandwidth required; |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Send the video to remote side.
Parameters
sessionId | The session ID of the call. |
send | Set to true to send the video, or false to stop sending. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Set the window for a session that is used for displaying the received remote video image.
Parameters
sessionId | The session ID of the call. |
renderer | SurfaceView a SurfaceView for displaying the received remote video image. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Set the window for a session that is used for displaying the received remote screen image.
Parameters
sessionId | The session ID of the call. |
renderer | SurfaceView a SurfaceView for displaying the received remote screen image. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Start/stop displaying the local video image.
Parameters
state | Set to true to display local video image. |
mirror | Set to true to display the mirror image of local video. |
renderer | SurfaceView a SurfaceView for displaying local video image from camera. |
Enable/disable the NACK feature (rfc6642) which helps to improve the video quality.
Parameters
state | Set to true to enable. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Set a volume |scaling| to be applied to the outgoing signal of a specific audio channel.
47 Parameters
sessionId | The session ID of the call. |
scaling | Valid scale ranges [0, 1000]. Default is 100. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Set a volume |scaling| to be applied to the microphone signal of a specific audio channel.
Parameters
sessionId | The session ID of the call. |
scaling | Valid scale ranges [0, 1000]. Default is 100. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
enable/disable sdk audio manager,when enable sdk will auto manager audio device input/output. if the state is enabled, the onAudioDeviceChanged event will be triggered when available audio devices changed or audio device currently in use changed .
Parameters
state | @true enable sdk audio manager @false disable audio manager |
Get current set of available/selectable audio devices.
Returns
Current set of available/selectable audio devices.
Set the audio device that will used for audio call. For Android and iOS, switch between earphone and Loudspeaker allowed.
Parameters
defaultDevice | Set to true the SDK use loudspeaker for audio call, this just available for mobile platform only. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Call functions
Make a call
Parameters
callee | The callee. It can be a name only or full SIP URI, for example: user001 or sip:user001@sip.iptel.org or sip:user002@sip.yourdomain.com:5068 |
sendSdp | If it is set to false, the outgoing call will not include the SDP in INVITE message. |
videoCall | If it is set to true and at least one video codec was added, the outgoing call will include the video codec into SDP. Otherwise no video codec will be added into outgoing SDP. |
Returns
If the function succeeds, it will return the session ID of the call, which is greater than 0. If the function fails, it will return a specific error code.
Note: the function success just means the outgoing call is processing, you need to detect the call final state in onInviteTrying, onInviteRinging, onInviteFailure callback events.
rejectCall Reject the incoming call.
Parameters
sessionId | The session ID of the call. |
code | Reject code, for example, 486, 480 etc. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
hangUp Hang up the call.
Parameters
sessionId | Session ID of the call. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
answerCall Answer the incoming call.
Parameters
sessionId | The session ID of call. |
videoCall | If the incoming call is a video call and the video codec is matched, set to true to answer the video call. If set to false, the answer call does not include video codec answer anyway. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
updateCall Use the re-INVITE to update the established call.
Parameters
sessionId | The session ID of call. |
enableAudio | Set to true to allow the audio in updated call, or false to disable audio in updated call. |
enableVideo | Set to true to allow the video in update call, or false to disable video in updated call. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return specific error code.
Remarks
Example usage:
Example 1: A called B with the audio only, and B answered A, there would be an audio conversation between A and B. Now A want to see B through video, A could use these functions to fulfill it.
clearVideoCodec(); addVideoCodec(VIDEOCODEC_H264); updateCall(sessionId, true, true);
Example 2: Remove video stream from the current conversation. updateCall(sessionId, true, false);
To place a call on hold.
Parameters
sessionId | The session ID of call. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Take off hold.
Parameters
sessionId | The session ID of call. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Mute the specified audio or video session.
Parameters
sessionId | The session ID of the call. |
muteIncomingAudi o | Set it to true to mute incoming audio stream. Once set, remote side audio cannot be heard. |
muteOutgoingAudi o | Set it to true to mute outgoing audio stream. Once set, the remote side cannot hear the audio. |
muteIncomingVide o | Set it to true to mute incoming video stream. Once set, remote side video cannot be seen. |
muteOutgoingVide o | Set it to true to mute outgoing video stream, the remote side cannot see the video. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Forward call to another one when receiving the incoming call.
Parameters
sessionId | The session ID of the call. |
forwardTo | Target of the forward. It can be either "sip:number@sipserver.com" or "number". |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return value a specific error code.
This function will be used for picking up a call based on the BLF (Busy Lamp Field) status.
Parameters
replaceDialogId | The ID of the call which will be pickup. It comes with onDialogStateUpdated callback. |
videoCall | Indicates pickup video call or audio call |
If the function succeeds, it will return a session ID that is greater than 0 to the new call, otherwise returns a specific error code that is less than 0.
Remarks
The scenario is:
User 101 subscribed the user 100's call status: sendSubscription(mSipLib, "100", "dialog");
When 100 holds a call or 100 is ringing, onDialogStateUpdated callback will be triggered, and 101 will receive this callback. Now 101 can use pickupBLFCall function to pick the call rather than 100 to talk with caller.
Send DTMF tone.
Parameters
sessionId | The session ID of the call. | ||
enum_dtmfMethod | DTMF tone could be sent via two methods: DTMF_RFC2833 or DTMF_INFO. The DTMF_RFC2833 is recommend. | ||
code | The DTMF tone. Values include: | ||
code | Description | ||
0 | The DTMF tone 0. | ||
1 | The DTMF tone 1. | ||
2 | The DTMF tone 2. | ||
3 | The DTMF tone 3. | ||
4 | The DTMF tone 4. | ||
5 | The DTMF tone 5. | ||
6 | The DTMF tone 6. | ||
7 | The DTMF tone 7. | ||
8 | The DTMF tone 8. | ||
9 | The DTMF tone 9. | ||
10 | The DTMF tone *. | ||
11 | The DTMF tone #. | ||
12 | The DTMF tone A. | ||
13 | The DTMF tone B. | ||
14 | The DTMF tone C. | ||
15 | The DTMF tone D. | ||
16 | The DTMF tone FLASH. |
Parameters
dtmfDuration | The DTMF tone samples. Recommended value 160. |
playDtmfTone | Set to true the SDK play local DTMF tone sound during send DTMF. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Refer functions
Transfer the current call to another callee.
Parameters
sessionId | The session ID of the call. |
referTo | Target callee of the transfer. It can be either "sip:number@sipserver.com" or "number". |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Remarks
refer(sessionId, "sip:testuser12@sip.portsip.com");
You can refer to the video on Youtube at:
https://www.youtube.com/watch?v=_2w9EGgr3FY, which will demonstrate how to complete the transfer.
Make an attended refer. Parameters
sessionId | The session ID of the call. |
replaceSessionId | Session ID of the replace call. |
referTo | Target callee of the refer. It can be either "sip:number@sipserver.com" or "number". |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Remarks
Please read the sample project source code to get more details, or you can refer to the video on YouTube at:
https://www.youtube.com/watch?v=_2w9EGgr3FY
Note: Please use Windows Media Player to play the AVI file, which demonstrates how to complete the transfer.
Make an attended refer.
Parameters
sessionId | The session ID of the call. |
replaceSessionId | The session ID of the session to be replaced. |
replaceMethod | The SIP method name to be added in the "Refer-To" header, usually INVITE or BYE. |
target | The target to which the REFER message will be sent. |
referTo | The URI to be added into the "Refer-To" header. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Make an attended refer.
Parameters
replaceSessionId | The session ID of the session which will be replaced. |
replaceMethod | The SIP method name which will be added in the "Refer-To" header, usually INVITE or BYE. |
target | The target to which the REFER message will be sent. |
referTo | The URI which will be added into the "Refer-To" header. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
By accepting the REFER request, a new call will be made if this function is called. The
function is usually called after onReceivedRefer callback event.
Parameters
referId | The ID of REFER request that comes from onReceivedRefer callback event. |
referSignaling | The SIP message of REFER request that comes from onReceivedRefer callback event. |
Returns
If the function succeeds, it will return a session ID greater than 0 to the new call for REFER; otherwise it will return a specific error code less than 0;
Reject the REFER request.
Parameters
referId | The ID of REFER request that comes from onReceivedRefer callback event. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Send audio and video stream functions
Enable the SDK send PCM stream data to remote side from another source instead of microphone. This function MUST be called first to send the PCM stream data to another
side.
Parameters
sessionId | The session ID of call. |
state | Set to true to enable the send stream, or false to disable. |
streamSamplesPer Sec | The PCM stream data sample, in seconds. For example 8000 or 16000. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Send the audio stream in PCM format from another source instead of audio device
capturing (microphone).
Parameters
sessionId | Session ID of the call conversation. |
data | The PCM audio stream data. It must be 16bit, mono. |
dataLength | The size of data. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Remarks
Usually we should use it like below:
You can't have too much audio data at one time as we have 100ms audio buffer only. Once you put too much, data will be lost. It is recommended to send 20ms audio data every 20ms.
Enable the SDK to send video stream data to remote side from another source instead of camera.
This function MUST be called first to send the video stream data to another side.
Parameters
sessionId | The session ID of call. |
state | Set to true to enable the send stream, or false to disable. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Send the video stream in i420 from another source instead of video device capturing (camera).
Before calling this function, you MUST call the enableSendVideoStreamToRemote function.
Parameters
sessionId | Session ID of the call conversation. |
data | The video stream data. It must be in i420 format. |
dataLength | The size of data. |
width | The width of the video image. |
height | The height of video image. |
Returns
If the function succeeds, it will return value is 0. If the function fails, it will return a specific error code.
RTP packets, Audio stream and video stream callback
Set the RTP callbacks to allow access to the sent and received RTP packets.
Parameters
sessionId | The session ID of the call. |
mediaType | RTP packet media type, 0 for audio, 1 for video , 2 for screen. |
directionMode | RTP packet direction, 0 for sending, 1 for receiving. |
Returns
If the function succeeds, it will return value is 0. If the function fails, it will return a specific error code.
Enable/disable the audio stream callback. The onAudioRawCallback event will be triggered if the callback is enabled.
Parameters
sessionId | The session ID of call. |
enable | Set to true to enable audio stream callback, or false to stop the callback. |
enum_direction | The audio stream callback mode. Supported modes include ENUM_DIRECTION_NONE, ENUM_DIRECTION_SEND, |
ENUM_DIRECTION_RECV ENUM_DIRECTION_SEND_RECV. |
Enable/disable the video stream callback, the onVideoRawCallback event will be triggered if the callback is enabled.
Parameters
sessionId | The session ID of call. |
enum_direction | The video stream callback mode. Supported modes include ENUM_DIRECTION_NONE, ENUM_DIRECTION_SEND, |
ENUM_DIRECTION_RECV, ENUM_DIRECTION_SEND_RECV. |
Record functions
Start recording the call.
Parameters
sessionId | The session ID of call conversation. |
recordFilePath | The file path to save record file. It must be existent. |
recordFileName | The file name of record file. For example audiorecord.wav or videorecord.avi. |
appendTimeStamp | Set to true to append the timestamp to the name of the recording file. |
audioChannels | Set to record file audio channels, 1 - mono 2 - stereo. |
enum_fileFormat | The record file format, allow below values: enum_FILE_FORMAT_WAVE = 1, ///< The record audio file is WAVE format. enum_FILE_FORMAT_AMR =2, ///< The record audio file is in AMR format with all voice data compressed by AMR codec. enum_FILE_FORMAT_MP3 = 3;///< The record audio file is in MP3 format. enum_FILE_FORMAT_MP4 = 4;///< The record video file is in MP4(AAC and H264) format. |
enum_audioRecor dMode | The audio record mode, allow below values: enum_RECORD_MODE_NONE = 0, ///< Not Record. enum_RECORD_MODE_RECV = 1, ///< Only record the received data. enum_RECORD_MODE_SEND, ///< Only record send data. enum_RECORD_MODE_BOTH ///< Record both received and sent data. |
enum_videoRecord Mode | Allow to set video record mode. Support to record received and/or sent video. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Stop recording.
Parameters
sessionId | The session ID of call conversation. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Play audio and video file and RTMP/RTSP stream functions
Play an local file or RTSP/RTMP stream to remote party.
Parameters
sessionId | Session ID of the call. |
fileUrl | The url or filepath, such as "/mnt/sdcard/test.avi". |
loop | Set to false to stop playing video file when it is ended, or true to play it repeatedly. |
playAudio | 0 - Not play file audio. 1 - Play file audio. 2 - Play file audio mix with Mic. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Stop play file to remote side.
Parameters
sessionId | Session ID of the call. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Play an local file or RTSP/RTMP stream.
Parameters
fileUrl | The url or filepath, such as "/mnt/sdcard/test.avi". |
loop | Set to false to stop playing video file when it is ended, or true to play it repeatedly. |
renderer | SurfaceView a SurfaceView for displaying the play image. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Stop play file locally.
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Used for testing loopback for the audio device.
Parameters
enable | Set to true to start testing audio loopback test; or set to false to stop. |
Conference functions
Create an audio conference. It will fail if the existing conference is not ended yet. Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Create a video conference. It will fail if the existing conference is not ended yet.
Parameters
conferenceVideoW indow | SurfaceView The window used for displaying the conference video. |
videoWidth | Width of conference video resolution |
videoHeight | Height of conference video resolution |
layout | Conference Video layout, default is 0 - Adaptive. 0 - Adaptive(1,3,5,6) 1 - Only Local Video 2 - 2 video,PIP 3 - 2 video, Left and right 4 - 2 video, Up and Down 5 - 3 video 6 - 4 split video 7 - 5 video |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
End the exist conference.
Set the window for a conference that is used for displaying the received remote video
image.
Parameters
conferenceVideoWindow | SurfaceView The window which is used for displaying the conference vide |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Join a session into existing conference. If the call is in hold, it will be un-hold
automatically.
Parameters
sessionId | Session ID of the call. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Remove a session from an existing conference.
Parameters
sessionId | Session ID of the call. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
RTP and RTCP QOS functions
Set the audio RTCP bandwidth parameters as RFC3556.
Parameters
sessionId | Set the audio RTCP bandwidth parameters as RFC3556. |
BitsRR | The bits for the RR parameter. |
BitsRS | The bits for the RS parameter. |
KBitsAS | The Kbits for the AS parameter. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Set the video RTCP bandwidth parameters as the RFC3556.
Parameters
sessionId | The session ID of call conversation. |
BitsRR | The bits for the RR parameter. |
BitsRS | The bits for the RS parameter. |
KBitsAS | The Kbits for the AS parameter. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Set the DSCP (differentiated services code point) value of QoS (Quality of Service) for audio channel.
Parameters
state | Set to YES to enable audio QoS and DSCP value will be 46; or NO to disable audio QoS and DSCP value will be 0. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Set the DSCP(differentiated services code point) value of QoS(Quality of Service) for video channel.
Parameters
state | Set to YES to enable video QoS and DSCP value will be 34; or NO to disable video QoS and DSCP value will be 0. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Set the MTU size for video RTP packet.
Parameters
mtu | Set MTU value. Allow values range 512 - 65507. Default is 14000. |
Returns
If the function succeeds, the return value is 0. If the function fails, the return value is a specific error code.
RTP statistics functions
Obtain the statistics of channel. the event onStatistics will be triggered.
Parameters
sessionId | The session ID of call conversation. |
Returns
If the function succeeds, it will return value is 0. If the function fails, it will return a specific error code.
Audio effect functions
Enable/disable Voice Activity Detection(VAD).
Parameters
state | Set to true to enable VAD, or false to disable. |
Enable/disable AEC (Acoustic Echo Cancellation).
Parameters
state | Set to true to enable AEC, or false to disable. |
Enable/disable Comfort Noise Generator(CNG).
Parameters
state | Set to true to enable CNG, or false to disable. |
Enable/disable Automatic Gain Control(AGC).
Parameters
state | Set to true to enable AEC, or false to disable. |
Enable/disable Audio Noise Suppression(ANS).
Parameters
state | Set to true to enable ANS, or false to disable. |
Send OPTIONS/INFO/MESSAGE functions
Send OPTIONS message.
Parameters
to | The recipient of OPTIONS message. |
sdp | The SDP of OPTIONS message. It's optional if user does not want to send the SDP with OPTIONS message. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return value a specific error code.
Send a INFO message to remote side in dialog.
Parameters
sessionId | The session ID of call. |
mimeType | The mime type of INFO message. |
subMimeType | The sub mime type of INFO message. |
infoContents | The contents that will be sent with INFO message. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Send a MESSAGE message to remote side in dialog.
Parameters
sessionId | The session ID of call. |
mimeType | The mime type of MESSAGE message. |
subMimeType | The sub mime type of MESSAGE message. |
message | The contents that will be sent with MESSAGE message. Binary data allowed. |
messageLength | The message size. |
Returns
If the function succeeds, it will return a message ID that allows to track the message sending state in onSendMessageSuccess and onSendMessageFailure. If the function fails, it will return a specific error code that is less than 0.
Remarks
Example 1: Send a plain text message. Note: to send other languages text, please use the UTF8 to encode the message before sending.
sendMessage(sessionId, "text", "plain", "hello",6);
Example 2: Send a binary message.
sendMessage(sessionId, "application", "vnd.3gpp.sms", binData, binDataSize);
Send a out of dialog MESSAGE message to remote side.
Parameters
to | The message receiver. Likes sip:receiver@portsip.com |
mimeType | The mime type of MESSAGE message. |
subMimeType | The sub mime type of MESSAGE message. |
isSMS | Set to YES to specify "messagetype=SMS" in the To line, or NO to disable. |
message | The contents that will be sent with MESSAGE message. Binary data allowed. |
messageLength | The message size. |
Returns
If the function succeeds, it will return a message ID that allows to track the message sending state in onSendOutOfMessageSuccess and onSendOutOfMessageFailure. If the function fails, it will return a specific error code that is less than 0.
Remarks
Example 1: Send a plain text message. Note: to send other languages text, please use the UTF8 to encode the message before sending.
sendOutOfDialogMessage("sip:user1@sip.portsip.com", "text", "plain", "hello", 6);
Example 2: Send a binary message.
sendOutOfDialogMessage("sip:user1@sip.portsip.com","application", "vnd.3gpp.sms", binData, binDataSize);
Indicate the SDK uses the P2P mode for presence or presence agent mode.
Parameters
mode | 0 - P2P mode; 1 - Presence Agent mode. Default is P2P mode. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Remarks
Since presence agent mode requires the PBX/Server support the PUBLISH, please ensure you have your server and PortSIP PBX support this feature. For more details please visit: https://www.portsip.com/portsip-pbx
Set the default expiration time to be used when creating a subscription.
Parameters
secs | The default expiration time of subscription. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Set the default expiration time to be used when creating a publication.
Parameters
secs | The default expiration time of publication. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Send a SUBSCRIBE message for presence to a contact.
Parameters
contact | The target contact, it must be in the format of sip:contact001@sip.portsip.com. |
subject | This subject text will be inserted into the SUBSCRIBE message. For example: "Hello, I'm Jason". The subject maybe is in UTF8 format. You should use UTF8 to decode it. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Terminate the given presence subscription.
Parameters
subscribeId | The ID of the subscription. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Accept the presence SUBSCRIBE request which received from contact.
Parameters
subscribeId | Subscription ID. When receiving a SUBSCRIBE request from contact, the event onPresenceRecvSubscribe will be triggered. The event includes the subscription ID. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Reject a presence SUBSCRIBE request received from contact.
Parameters
subscribeId | Subscription ID. When receiving a SUBSCRIBE request from contact, the event onPresenceRecvSubscribe will be triggered. The event inclues the subscription ID. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Send a NOTIFY message to contact to notify that presence status is online/offline/changed.
Parameters
subscribeId | Subscription ID. When receiving a SUBSCRIBE request from contact, the event onPresenceRecvSubscribe that includes the Subscription ID will be triggered. |
statusText | The state text of presence status. For example: "I'm here", offline must use "offline" |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Send a SUBSCRIBE message to subscribe an event.
Parameters
to | The user/extension will be subscribed. |
eventName | The event name to be subscribed. |
Returns
If the function succeeds, it will return the ID of that SUBSCRIBE which is greater than 0. If the function fails, it will return a specific error code which is less than 0.
Remarks
Example 1, below code indicates that user/extension 101 is subscribed to MWI (Message Waiting notifications) for checking his voicemail: int32 mwiSubId = sendSubscription("sip:101@test.com", "message-summary");
Example 2, to monitor a user/extension call status, You can use code: sendSubscription(mSipLib, "100", "dialog"); Extension 100 refers to the user/extension to be monitored. Once being monitored, when extension 100 hold a call or is ringing, the onDialogStateUpdated callback will be triggered.
Terminate the given subscription.
Parameters
subscribeId | The ID of the subscription. |
Returns
If the function succeeds, it will return value 0. If the function fails, it will return a specific error code.
Remarks
For example, if you want stop check the MWI, use below code:
terminateSubscription(mwiSubId);
Class Documentation
com.portsip.PortSipEnumDefine
com.portsip.PortSipEnumDefine.AudioDevice Enum Reference
Public Attributes
SPEAKER_PHONE
WIRED_HEADSET
EARPIECE
BLUETOOTH
NONE
Detailed Description
AudioDevice list possible audio devices that we currently support.
Static Public Attributes
static final int enum_AUDIOCODEC_G729 = 18
static final int enum_AUDIOCODEC_PCMA = 8
static final int enum_AUDIOCODEC_PCMU = 0
static final int enum_AUDIOCODEC_GSM = 3
static final int enum_AUDIOCODEC_G722 = 9
static final int enum_AUDIOCODEC_ILBC = 97
static final int enum_AUDIOCODEC_AMR = 98
static final int enum_AUDIOCODEC_AMRWB = 99
static final int enum_AUDIOCODEC_SPEEX = 100
static final int enum_AUDIOCODEC_SPEEXWB =102
static final int enum_AUDIOCODEC_ISACWB = 103
static final int enum_AUDIOCODEC_ISACSWB =104
static final int enum_AUDIOCODEC_OPUS =105
static final int enum_AUDIOCODEC_DTMF = 101
static final int enum_VIDEOCODEC_NONE = -1
static final int enum_VIDEOCODEC_I420 = 133
static final int enum_VIDEOCODEC_H264 = 125
static final int enum_VIDEOCODEC_VP8 = 120
static final int enum_VIDEOCODEC_VP9 = 122
static final int enum_SRTPPOLICY_NONE = 0
static final int enum_SRTPPOLICY_FORCE = 1
static final int enum_SRTPPOLICY_PREFER = 2
static final int enum_TRANSPORT_UDP = 0
static final int enum_TRANSPORT_TLS = 1
static final int enum_TRANSPORT_TCP = 2
static final int enum_LOG_LEVEL_NONE = -1
static final int enum_LOG_LEVEL_ERROR = 1
static final int enum_LOG_LEVEL_WARNING = 2
static final int enum_LOG_LEVEL_INFO = 3
static final int enum_LOG_LEVEL_DEBUG = 4
static final int enum_DTMF_MOTHOD_RFC2833 = 0
static final int enum_DTMF_MOTHOD_INFO = 1
static final int enum_DIRECTION_NONE = 0
static final int enum_DIRECTION_SEND_RECV = 1
static final int enum_DIRECTION_SEND = 2
static final int enum_DIRECTION_RECV = 3
static final int enum_RECORD_MODE_NONE = 0
static final int enum_RECORD_MODE_RECV = 1
static final int enum_RECORD_MODE_SEND = 2
static final int enum_RECORD_MODE_BOTH = 3
static final int enum_FILE_FORMAT_WAVE = 1
The record audio file is in WAVE format.
static final int enum_FILE_FORMAT_AMR = 2
The record audio file is in AMR format - all voice data are compressed by AMR codec. Mono.
static final int enum_FILE_FORMAT_MP3 = 3 The record audio file is in MP3 format.
static final int enum_FILE_FORMAT_MP4 = 4
The record video file is in MP4(AAC and H264) format. ![ref6]
Member Data Documentation
final int com.portsip.PortSipEnumDefine.enum_VIDEOCODEC_NONE = -1[static]
Used in startRecord only
final int com.portsip.PortSipEnumDefine.enum_VIDEOCODEC_I420 = 133[static]
Used in startRecord only
final int com.portsip.PortSipEnumDefine.enum_DIRECTION_SEND_RECV = 1[static]
both received and sent
final int com.portsip.PortSipEnumDefine.enum_DIRECTION_SEND = 2[static]
Only the sent
final int com.portsip.PortSipEnumDefine.enum_DIRECTION_RECV = 3[static]
Only the received
final int com.portsip.PortSipEnumDefine.enum_RECORD_MODE_NONE = 0[static]
Not Recorded.
final int com.portsip.PortSipEnumDefine.enum_RECORD_MODE_RECV = 1[static]
Only record the received data.
final int com.portsip.PortSipEnumDefine.enum_RECORD_MODE_SEND = 2[static]
Only record the sent data.
final int com.portsip.PortSipEnumDefine.enum_RECORD_MODE_BOTH = 3[static]
Static Public Attributes
static final int ECoreErrorNone = 0
static final int INVALID_SESSION_ID = -1
static final int ECoreAlreadyInitialized = -60000
static final int ECoreNotInitialized = -60001
static final int ECoreSDKObjectNull = -60002
static final int ECoreArgumentNull = -60003
static final int ECoreInitializeWinsockFailure = -60004
static final int ECoreUserNameAuthNameEmpty = -60005
static final int ECoreInitiazeStackFailure = -60006
static final int ECorePortOutOfRange = -60007
static final int ECoreAddTcpTransportFailure = -60008
static final int ECoreAddTlsTransportFailure = -60009
static final int ECoreAddUdpTransportFailure = -60010
static final int ECoreNotSupportMediaType = -60011
static final int ECoreNotSupportDTMFValue = -60012
static final int ECoreAlreadyRegistered = -60021
static final int ECoreSIPServerEmpty = -60022
static final int ECoreExpiresValueTooSmall = -60023
static final int ECoreCallIdNotFound = -60024
static final int ECoreNotRegistered = -60025
static final int ECoreCalleeEmpty = -60026
static final int ECoreInvalidUri = -60027
static final int ECoreAudioVideoCodecEmpty = -60028
static final int ECoreNoFreeDialogSession = -60029
static final int ECoreCreateAudioChannelFailed = -60030
static final int ECoreSessionTimerValueTooSmall = -60040
static final int ECoreAudioHandleNull = -60041
static final int ECoreVideoHandleNull = -60042
static final int ECoreCallIsClosed = -60043
static final int ECoreCallAlreadyHold = -60044
static final int ECoreCallNotEstablished = -60045
static final int ECoreCallNotHold = -60050
static final int ECoreSipMessaegEmpty = -60051
static final int ECoreSipHeaderNotExist = -60052
static final int ECoreSipHeaderValueEmpty = -60053
static final int ECoreSipHeaderBadFormed = -60054
static final int ECoreBufferTooSmall = -60055
static final int ECoreSipHeaderValueListEmpty = -60056
static final int ECoreSipHeaderParserEmpty = -60057
static final int ECoreSipHeaderValueListNull = -60058
static final int ECoreSipHeaderNameEmpty = -60059
static final int ECoreAudioSampleNotmultiple = -60060
static final int ECoreAudioSampleOutOfRange = -60061
static final int ECoreInviteSessionNotFound = -60062
static final int ECoreStackException = -60063
static final int ECoreMimeTypeUnknown = -60064
static final int ECoreDataSizeTooLarge = -60065
static final int ECoreSessionNumsOutOfRange = -60066
static final int ECoreNotSupportCallbackMode = -60067
static final int ECoreNotFoundSubscribeId = -60068
static final int ECoreCodecNotSupport = -60069
static final int ECoreCodecParameterNotSupport = -60070
static final int ECorePayloadOutofRange = -60071
static final int ECorePayloadHasExist = -60072
static final int ECoreFixPayloadCantChange = -60073
static final int ECoreCodecTypeInvalid = -60074
static final int ECoreCodecWasExist = -60075
static final int ECorePayloadTypeInvalid = -60076
static final int ECoreArgumentTooLong = -60077
static final int ECoreMiniRtpPortMustIsEvenNum = -60078
static final int ECoreCallInHold = -60079
static final int ECoreNotIncomingCall = -60080
static final int ECoreCreateMediaEngineFailure = -60081
static final int ECoreAudioCodecEmptyButAudioEnabled = -60082
static final int ECoreVideoCodecEmptyButVideoEnabled = -60083
static final int ECoreNetworkInterfaceUnavailable = -60084
static final int ECoreWrongDTMFTone = -60085
static final int ECoreWrongLicenseKey = -60086
static final int ECoreTrialVersionLicenseKey = -60087
static final int ECoreOutgoingAudioMuted = -60088
static final int ECoreOutgoingVideoMuted = -60089
static final int ECoreFailedCreateSdp = -60090
static final int ECoreTrialVersionExpired = -60091
static final int ECoreStackFailure = -60092
static final int ECoreTransportExists = -60093
static final int ECoreUnsupportTransport = -60094
static final int ECoreAllowOnlyOneUser = -60095
static final int ECoreUserNotFound = -60096
static final int ECoreTransportsIncorrect = -60097
static final int ECoreCreateTransportFailure = -60098
static final int ECoreTransportNotSet = -60099
static final int ECoreECreateSignalingFailure = -60100
static final int ECoreArgumentIncorrect = -60101
static final int ECoreIVRObjectNull = -61001
static final int ECoreIVRIndexOutOfRange = -61002
static final int ECoreIVRReferFailure = -61003
static final int ECoreIVRWaitingTimeOut = -61004
static final int EAudioFileNameEmpty = -70000
static final int EAudioChannelNotFound = -70001
static final int EAudioStartRecordFailure = -70002
static final int EAudioRegisterRecodingFailure = -70003
static final int EAudioRegisterPlaybackFailure = -70004
static final int EAudioGetStatisticsFailure = -70005
static final int EAudioPlayFileAlreadyEnable = -70006
static final int EAudioPlayObjectNotExist = -70007
static final int EAudioPlaySteamNotEnabled = -70008
static final int EAudioRegisterCallbackFailure = -70009
static final int EAudioCreateAudioConferenceFailure = -70010
static final int EAudioOpenPlayFileFailure = -70011
static final int EAudioPlayFileModeNotSupport = -70012
static final int EAudioPlayFileFormatNotSupport = -70013
static final int EAudioPlaySteamAlreadyEnabled = -70014
static final int EAudioCreateRecordFileFailure = -70015
static final int EAudioCodecNotSupport = -70016
static final int EAudioPlayFileNotEnabled = -70017
static final int EAudioPlayFileUnknowSeekOrigin = -70018
static final int EAudioCantSetDeviceIdDuringCall =-70019
static final int EAudioVolumeOutOfRange =-70020
static final int EVideoFileNameEmpty = -80000
static final int EVideoGetDeviceNameFailure = -80001
static final int EVideoGetDeviceIdFailure = -80002
static final int EVideoStartCaptureFailure = -80003
static final int EVideoChannelNotFound = -80004
static final int EVideoStartSendFailure = -80005
static final int EVideoGetStatisticsFailure = -80006
static final int EVideoStartPlayAviFailure = -80007
static final int EVideoSendAviFileFailure = -80008
static final int EVideoRecordUnknowCodec = -80009
static final int EVideoCantSetDeviceIdDuringCall = -80010
static final int EVideoUnsupportCaptureRotate = -80011
static final int VideoUnsupportCaptureResolution = -80012
static final int ECameraSwitchTooOften = -80013
static final int EMTUOutOfRange = -80014
static final int EDeviceGetDeviceNameFailure = -90001
Last updated