How to Use WebRTC SDK in Native Android App?
Ant Media Server has native mobile SDKs (IOS and Android) for WebRTC. You can use WebRTC facilities in Android Platform with the help of Ant Media Server’s Native Android WebRTC SDK. In this blog post, features of Android SDK will be presented with a sample Android project which comes bundled with the SDK.
This SDK has the following main features:
- Provides peer to peer WebRTC communication between Android devices and browsers by using Ant Media server as a signalling server.
- Could publish WebRTC stream which could be played by other Android devices and browsers (mobile or desktop).
- Could play WebRTC stream which is published by other Android devices and browsers (mobile or desktop).
- Could join conference room that is created in Ant Media Server.
Prerequisites for WebRTC Android SDK
WebRTC iOS and Android SDK’s are free to download. You can access them through this link on antmedia.io. If you’re an enterprise user, it will be also available for you to download in your subscription page. Anyway, after you download the SDK, you can just unzip the file.You could also obtain a trial version of Ant Media Server Enterprise Edition from here.
Run the Sample WebRTC Android App
After downloading the SDK, open and run the sample project in Android Studio.
Select your project’s
build.gradle file path and Click to the OK button.
PS: You need to set
SERVER_ADDRESS parameter in MainActivity.java:
Publish Stream from your Android
MainActivity.java, you need to set
MainActivity.java, set the stream id to anything else then
Start Publishingbutton on the main screen. After the clicking
Start Publishing, stream will be published on Ant Media Server.
- Then it will start Publishing to your Ant Media Server. You can go to the web panel of Ant Media Server(http://server_ip:5080) and watch the stream there. You can also quickly play the stream via
Play Stream from your Android
- Firstly, you need to set
- Playing stream on your Android is almost the same as Publishing. Before playing, make sure that there is a stream that is already publishing to the server with same stream id in your
streamIdparameter (You can quickly publish to the Ant Media Server via
https://your_domain:5443/WebRTCAppEE). For our sample, stream id is still "streamTest1" in the image below. Then you just need to tap
P2P Communication with your Android
WebRTC Android SDK also supports P2P communication. As you guess, just set
When there is another peer is connected to the same stream id via Android, iOS or Web, then P2P communication will be established and you can talk to each other. You can quickly connect to the same stream id via
Join Conference Room with your Android
WebRTC Android SDK also supports Conference Room feature. You just need to change the launcher activity to ConferenceActivity.java activity:
When there are other streams are connected to the same stream id via Android, iOS or Web, then Conference Room will be established and you can talk to each other. You can quickly connect to the same stream id via
Develop a WebRTC Android App
We highly recommend using the sample project to get started your application. Nevertheless, it’s good to know the dependencies and how it works. So that we’re going to tell how to create a WebRTC Android app from Scratch. Let’s get started.
Creating Android Project
Open Android Studio and Create a New Android Project
File > New > New Project. Choose Empty Activity in the next window:
Click the Next button and a window should open as shown below for the project details. Fill the form:
Click Finish and complete creating the project.
Import WebRTC SDK as Module to Android Project
After creating the project. Let’s import the WebRTC Android SDK to the project. For doing that click
File > New > Import Module. Choose the directory of the WebRTC Android SDK and click the Finish button.
If module is not included in the project, add the module name into
settings.gradlefile as shown in the image below.
Add dependency to Android Project App Module
Open Module Settingsand click the
Dependenciestab. Then a window should appear as below. Click the
+ button at the bottom and choose `Module Dependency"
Choose WebRTC Native Android SDK and click OK button
CRITICAL thing about thatYou need import Module as an API as shown in the image above.It will look like as in the image below after adding the dependency:
Prepare the App for Streaming
- Create a MainActivity.java Class and add a Button to your activity main layout. This is just simple Android App development, we don’t give details here. You can get lots of tutorials about that on the Internet.
- Add permissions in Manifest file.
Open the AndroidManifest.xml and add below permissions between
Implement MainActivity onCreate function
Open the MainActivity.java and implement it as below. You should change
SERVER_URLaccording to your Ant Media Server address. Secondly, the third parameter in the last line of the code below is
IWebRTCClient.MODE_PUBLISHthat publishes the stream to the server. You can use
IWebRTCClient.MODE_PLAYfor playing stream and
IWebRTCClient.MODE_JOINfor P2P communication. If token control is enabled, you should define
Create activity_main.xml layout
Create an activity_main.xml layout file and add below codes.
How to Publish
We need to change some codes in onCreate. As a result, following code snippets just publish the stream on your server with
- You need to set
private String webRTCMode = IWebRTCClient.MODE_PUBLISH;
How to Play
Playing a Stream is almost the same as Publishing. We just need to change some codes in onCreate. As a result, the following code snippets just plays the stream on your server with
streamId: 'stream1'. Make sure that, before you try to play, you need to publish a stream to your server with having stream id 'stream1'
- You need to set
private String webRTCMode = IWebRTCClient.MODE_PLAY;
How to use Data Channel
Ant Media Server and Android SDK can use data channels in WebRTC. In order to use Data Channel, make sure that it’s enabled both server-side and mobile.
Before initialization of webRTCClient you need to:
- Set your Data Channel observer in the WebRTCClient object like this:
- Enable data channel communication by putting following key-value pair to your Intent before initialization of WebRTCClient with it:
Then your Activity is ready to send and receive data.
- To send data, call
sendMessageViaDataChannelmethod of WebRTCClient and pass the raw data like this on click of a button:
How to use Conference Room
Ant Media Server also supports ConferenceRoom feature. You need to initialize
private ConferenceManager conferenceManager;
conferenceManager = new ConferenceManager( this,
We hope this tutorial will be helpful for you, if you have any question, just send an email to firstname.lastname@example.org 🙂
Originally published at https://antmedia.io on November 27, 2020.