PJSIP for Android features
PJSIP is a comprehensive, open source, portable SIP, media, and NAT traversal library/SDK to develop SIP applications supporting voice/VoIP calls, video, secure communication using TLS and secure RTP (SRTP), and NAT traversal resolution helper for Android, iOS/iPhone, Linux, Windows, MacOS, embedded OSes, RTOSes, and other platforms.
This page presents the features of PJSIP for Android.
SIP features
All SIP features in PJSIP SIP features datasheet are supported, including but not limited to:
support for multiple SIP accounts,
call features such as voice and video call, call hold, call transfer, both attended and unattended, call redirection,
protocol features such as UPDATE, 100rel, PRACK, tel: URI, Session Timers, outbound, Path header, IPv6, DNS SRV resolution,
NAT traversal features such as symetric transport, SIP outbound, Service-Route, ICE and trickle ICE option,
presence and instant messaging,
security related, such as digest, AKA, AKA-v2, OAuth 2.0 authentication, TLS transport
Security features
The following SIP security and secure media features are supported and included in this tutorial:
NAT traversal features
The PJNATH Android NAT traversal stack supports most NAT traversal features in PJSIP NAT features datasheet, including but not limited to:
By default the features above are included in the build (including in this tutorial), but may not be enabled by the sample Android applications (this will be explained later in the sample application documentation).
Below are currently not supported:
uPnP, unless you’re able to build libupnp on Android.
Audio features
General audio features
All audio features in PJSIP media features datasheet are supported (they are platform independent).
Audio devices, codecs, and video will be discussed separately below.
Android audio codecs
Refer to PJSIP codecs datasheet for list of all supported codecs. PJSIP supports some of highly versatile audio codecs for Android, including:
Native Android AMR-NB/WB (included in this tutorial)
These codecs are supported and included in this tutorial:
These codecs are supported for Android, but are not built by default nor included in this tutorial:
Android audio devices
The following audio devices are supported:
Android Oboe (the one used in this tutorial)
Android Video Features
General video features
Video call is supported by PJSIP SIP and media SDK for Android since version 2.4. General video features as listed in PJMEDIA video features are supported and built by default (they are platform independent), including but not limited to:
Video Conference (CPU permitting!)
Android specific video codecs and devices are discussed in the next sections below.
Android video codecs
The PJMEDIA Android video framework supports some of highly versatile video codecs, including:
Android video devices
The PJMEDIA Android video device implementation include the following video devices:
native OpenGL ES 2.0 renderer (requires Android 2.2 (API level 8) or higher).
Sample applications
Yes, we include the batteries as well. The Android implementation comes with three sample applications:
Android Java SIP voice and video client application
A very simple softphone demo but yet already packed with powerful features.
Android Kotlin SIP client application
An even simpler sample app (about 500 lines of codes) supporting voice and video with AMR-WB and H.264 codecs.
Android CLI based remote controllable (telnet) SIP application
Simple remote controllable app for rapid feature development and testing.
What’s next
Coming up, we will install the required libraries and tools to build our Android SIP VoIP and video call client application.