{"id":3248,"date":"2023-12-11T13:29:13","date_gmt":"2023-12-11T07:59:13","guid":{"rendered":"https:\/\/www.enablex.io\/insights\/?p=3248"},"modified":"2025-07-24T14:37:09","modified_gmt":"2025-07-24T09:07:09","slug":"video-streaming-app-for-android","status":"publish","type":"post","link":"https:\/\/www.enablex.io\/insights\/video-streaming-app-for-android\/","title":{"rendered":"Building a Video Streaming App for Android with EnableX: A Step-by-Step Guide\u00a0\u00a0"},"content":{"rendered":"\n<p>Video Live streaming apps have become a necessity these days. Among the various platforms available, EnableX stands out as a reliable choice for developers to choose for video streaming apps. However, This blog delves deep into the process of building a Video Streaming App using the EnableX Android SDK.&nbsp;<\/p>\n\n\n\n<p>The EnableX Android SDK allows developers to create 1-to-1 or 1-to-many real-time communication (RTC) with the behaviour of Audio\/Video applications for Android devices.&nbsp; Therefore, this guide will help developers get started with the EnableX Server APIs and the Android SDK to build an Android video streaming app.&nbsp;&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Why Choose EnableX for Best Android Video Live Streaming Apps<\/strong>&nbsp;<\/h2>\n\n\n\n<p>EnableX is a versatile platform that offers not one, but two powerful solutions for building Android video streaming applications.&nbsp;<\/p>\n\n\n\n<p><a href=\"https:\/\/www.enablex.io\/developer\/video-api\/client-api\/android-toolkit\/play-stream\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>EnableX Android SDK<\/strong><\/a><strong>:<\/strong> This SDK simplifies the development of 1-to-1 or 1-to-many RTC (Real-Time Communication) apps for Android. However, It provides Server APIs and tools for creating virtual rooms where users can conduct RTC sessions.&nbsp;<\/p>\n\n\n\n<p><a href=\"https:\/\/www.enablex.io\/developer\/video\/solutions\/video-ui-kit\/android-video-ui-kit\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>EnableX Android UI Kit:<\/strong><\/a> For a streamlined development process, the Android UI Kit offers prebuilt user interface components. Also, it minimizes coding efforts, making integration of EnableX video capabilities efficient and user-friendly.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Experience the best Android SDK for Video Live Streaming Apps<\/strong>&nbsp;<\/h3>\n\n\n\n<p>The EnableX Android SDK is your all-in-one solution for Real-Time Communication (RTC) app development on Android. So, whether you&#8217;re a novice or an experienced developer, this SDK simplifies RTC app creation.&nbsp;<\/p>\n\n\n\n<p><strong>Why Opt for the EnableX Android SDK for Building Video Live Streaming App?<\/strong>&nbsp;<\/p>\n\n\n\n<ul>\n<li><strong>Comprehensive Solution:<\/strong> Access Server APIs and tools needed to build RTC apps.&nbsp;<\/li>\n\n\n\n<li><strong>Seamless Integration:<\/strong> Effortlessly create virtual rooms for RTC sessions.&nbsp;<\/li>\n\n\n\n<li><strong>User-Friendly:<\/strong> Suited for all skill levels, ensuring a smooth development experience.&nbsp;<\/li>\n\n\n\n<li><strong>Efficiency:<\/strong> Focus on core functionality without RTC complexities.&nbsp;<\/li>\n\n\n\n<li><strong>Scalability:<\/strong> Scales from small to large projects.&nbsp;<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Getting Started with EnableX Android SDK<\/strong>&nbsp;<\/h3>\n\n\n\n<p>Develop your application using the chosen language and according to your specific development requirements.\u202f\u202f&nbsp;<\/p>\n\n\n\n<p>To develop native Android applications, you must have the related Android SDK Android Studio IDE, and Java SE Development Kit (JDK). Furthermore, Detailed setup instructions can be found in the official documentation for <a href=\"https:\/\/developer.android.com\/design-for-safety\/privacy-sandbox\/setup\" target=\"_blank\" rel=\"noreferrer noopener\">Android development<\/a>.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Requirements for Android Development<\/strong>&nbsp;<\/h3>\n\n\n\n<p>Before beginning the integration of the Android SDK, these steps must be followed.\u202f&nbsp;<\/p>\n\n\n\n<p>\u202f&nbsp;<\/p>\n\n\n\n<ul>\n<li>Create an account on the <a href=\"https:\/\/www.enablex.io\/free-trial\/?utm_source=Insights&amp;utm_medium=Blog&amp;utm_campaign=organic\" target=\"_blank\" rel=\"noreferrer noopener\">EnableX Platform<\/a>\u202f\u202f&nbsp;<\/li>\n\n\n\n<li>Now, Create a video project\u202f\u202f\u202f&nbsp;<\/li>\n\n\n\n<li>Get App ID and App Key\u202f\u202f&nbsp;<\/li>\n\n\n\n<li>Create rooms and generate token\u202f\u202f&nbsp;<\/li>\n\n\n\n<li>Download EnableX <a href=\"https:\/\/www.enablex.io\/developer\/wp-content\/uploads\/Android_SDK_2.3.14\/EnxRtcAndroid-release_2.3.14.aar.zip\" target=\"_blank\" rel=\"noreferrer noopener\">Android SDK<\/a>&nbsp;<\/li>\n\n\n\n<li>Download <a href=\"https:\/\/www.enablex.io\/developer\/wp-content\/uploads\/webrtc\/android\/Enx_WebRTC_Android.zip\" target=\"_blank\" rel=\"noreferrer noopener\">WebRTC library<\/a>&nbsp;<\/li>\n\n\n\n<li>Therefore, Android Studio installed on your development machine&nbsp;<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Create an account on the EnableX Platform\u202f\u202f<\/strong>&nbsp;<\/h4>\n\n\n\n<p>\u202f\u202f&nbsp;<\/p>\n\n\n\n<ul>\n<li>Visit the EnableX portal <a href=\"https:\/\/portal.enablex.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/portal.enablex.io<\/a>.\u202f\u202f&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>\u202f\u202f&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"940\" height=\"390\" src=\"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2023\/12\/image-16.png\" alt=\"Live Video Streaming App\n\" class=\"wp-image-3292\" srcset=\"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2023\/12\/image-16.png 940w, https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2023\/12\/image-16-300x124.png 300w, https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2023\/12\/image-16-768x319.png 768w\" sizes=\"(max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<p>\u202f\u202f&nbsp;<\/p>\n\n\n\n<ul>\n<li>Now, Click on <strong>Try For Free<\/strong>.\u202f\u202f\u202f\u202f&nbsp;<\/li>\n\n\n\n<li><strong>Fill in the required details:<\/strong> Name, Phone number, Company, email address and check the box for Terms of Service and Privacy Policy.\u202f\u202f&nbsp;<\/li>\n<\/ul>\n\n\n\n<ul>\n<li>Click on <strong>Create Your Account<\/strong>.\u202f\u202f&nbsp;<\/li>\n\n\n\n<li>A verification email will be sent to the given address. Moreover, verify your account by clicking on the link in this email.\u202f\u202f&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>\u202f&nbsp;<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Setting Up Your Video Project for Live Streaming App<\/strong>&nbsp;<\/h4>\n\n\n\n<p>To begin developing a video application with EnableX <a href=\"https:\/\/www.enablex.io\/cpaas\/video-api?utm_source=insights&amp;utm_medium=Blog&amp;utm_campaign=organic\" target=\"_blank\" rel=\"noreferrer noopener\">Video Server APIs<\/a>, the first step is to create a project on the platform. Now, follow these steps to create a project:\u202f\u202f&nbsp;<\/p>\n\n\n\n<ul>\n<li>Login to the EnableX Portal.\u202f\u202f\u202f&nbsp;<\/li>\n\n\n\n<li>After successfully logging in, users are redirected to <strong>My Dashboard<\/strong>.&nbsp;&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>\u202f\u202f&nbsp;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"940\" height=\"706\" src=\"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2023\/12\/image-17.png\" alt=\"Video Streaming App Project Creation \" class=\"wp-image-3294\" srcset=\"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2023\/12\/image-17.png 940w, https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2023\/12\/image-17-300x225.png 300w, https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2023\/12\/image-17-768x577.png 768w\" sizes=\"(max-width: 940px) 100vw, 940px\" \/><\/figure><\/div>\n\n\n<p>From there, follow these steps to create a new project:\u202f\u202f&nbsp;<\/p>\n\n\n\n<ul>\n<li>Navigate <strong>My Projects<\/strong> section on the page.\u202f\u202f&nbsp;<\/li>\n\n\n\n<li>Click on <strong>CREATE PROJECT<\/strong> button. This opens <strong>Create Project<\/strong> page.\u202f\u202f&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>\u202f\u202f&nbsp;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"910\" height=\"650\" src=\"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2023\/12\/image-18.png\" alt=\"Video Streaming App Process\" class=\"wp-image-3295\" srcset=\"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2023\/12\/image-18.png 910w, https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2023\/12\/image-18-300x214.png 300w, https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2023\/12\/image-18-768x549.png 768w\" sizes=\"(max-width: 910px) 100vw, 910px\" \/><\/figure><\/div>\n\n\n<p>\u202f\u202f&nbsp;<\/p>\n\n\n\n<ul>\n<li>Provide the necessary information for your project, including the Project Name, Application, and Project Description.\u202f\u202f&nbsp;<\/li>\n\n\n\n<li>Also, navigate the <strong>Channels<\/strong> section and enable video services for your project.\u202f\u202f&nbsp;<\/li>\n\n\n\n<li>Now, Click on <strong>CREATE PROJECT<\/strong> button to create your project.\u202f\u202f&nbsp;<\/li>\n\n\n\n<li>Therefore, the project has been successfully created and a confirmation popup will appear.\u202f\u202f\u202f\u202f&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>\u202f\u202f&nbsp;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"664\" height=\"313\" src=\"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2023\/12\/image-19.png\" alt=\"Video Streaming App Setup\" class=\"wp-image-3296\" srcset=\"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2023\/12\/image-19.png 664w, https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2023\/12\/image-19-300x141.png 300w\" sizes=\"(max-width: 664px) 100vw, 664px\" \/><\/figure><\/div>\n\n\n<p>\u202f\u202f&nbsp;<\/p>\n\n\n\n<ul>\n<li>In the pop-up dialog, click on\u202f<strong>GET STARTED<\/strong> button.\u202f\u202f&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>\u202f&nbsp;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"940\" height=\"344\" src=\"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2023\/12\/image-20.png\" alt=\"Video Streaming App \" class=\"wp-image-3297\" srcset=\"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2023\/12\/image-20.png 940w, https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2023\/12\/image-20-300x110.png 300w, https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2023\/12\/image-20-768x281.png 768w\" sizes=\"(max-width: 940px) 100vw, 940px\" \/><\/figure><\/div>\n\n\n<p>\u202f\u202f&nbsp;<\/p>\n\n\n\n<p>\u202f\u202f&nbsp;<\/p>\n\n\n\n<ul>\n<li>Select the development method that best fits your preferences and requirements\u202f\u202f&nbsp;<\/li>\n\n\n\n<li>Select <strong>&lt;I Love To Code&gt;<\/strong> option from the available choices and click on <strong>Start With APIs<\/strong>.\u202f\u202f&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>\u202f\u202f&nbsp;<\/p>\n\n\n\n<p>Furthermore, this will give you access to the necessary APIs and SDKs for your project, enabling you to begin coding and developing your application with EnableX&#8217;s extensive tools and resources.\u202f\u202f&nbsp;<\/p>\n\n\n\n<p>\u202f&nbsp;<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Get App ID and App Key\u202f<\/strong>\u202f&nbsp;<\/h4>\n\n\n\n<p>Before you embark on your application development journey with the EnableX platform, it is essential to obtain an API Credential. However, this credential includes an App ID and App Key, which serve as the username and password, in the HTTP Base Authentication Request Header of our <a href=\"https:\/\/www.enablex.io\/cpaas\/video-api?utm_source=insights&amp;utm_medium=Blog&amp;utm_campaign=organic\" target=\"_blank\" rel=\"noreferrer noopener\">Video Server API Call<\/a>.\u202f\u202f\u202f&nbsp;<\/p>\n\n\n\n<p>Therefore, when you create a project, the API Access Credentials are emailed to you.\u202f\u202f&nbsp;<\/p>\n\n\n\n<p>\u202f\u202f&nbsp;<\/p>\n\n\n\n<p><strong>Note:<\/strong> However, make sure that you use the <em>App ID<\/em> as the <em>username<\/em> and the <em>App Key<\/em> as the <em>password<\/em> in the HTTP Base Authentication Request Header.\u202f\u202f&nbsp;<\/p>\n\n\n\n<p>\u202f&nbsp;<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Integrate Android Archive Files for Native Mobile Video Applications<\/strong>&nbsp;<\/h4>\n\n\n\n<p><strong>Process-1: Add. aar Files to Your Project<\/strong>&nbsp;<\/p>\n\n\n\n<ul>\n<li><strong>Get Android SDK:<\/strong> <a href=\"https:\/\/www.enablex.io\/developer\/wp-content\/uploads\/Android_SDK_2.3.14\/EnxRtcAndroid-release_2.3.14.aar.zip\" target=\"_blank\" rel=\"noreferrer noopener\">Download the Android SDK<\/a> and extract it to obtain the necessary <strong><em>.aar<\/em><\/strong> file for Android SDK.&nbsp;<\/li>\n\n\n\n<li><strong>Get WebRTC SDK:<\/strong> <a href=\"https:\/\/www.enablex.io\/developer\/wp-content\/uploads\/webrtc\/android\/Enx_WebRTC_Android.zip\" target=\"_blank\" rel=\"noreferrer noopener\">Download the WebRTC SDK<\/a> and extract it to obtain the <strong><em>.aar<\/em><\/strong> file for WebRTC SDK.&nbsp;<\/li>\n\n\n\n<li><strong>Add to lib:<\/strong> Place both downloaded <strong><em>.aar<\/em><\/strong> files under the <strong><em>lib<\/em><\/strong> folder of your project.&nbsp;<\/li>\n\n\n\n<li><strong>Edit App\u2019s gradle:<\/strong> However, Open your application&#8217;s <strong><em>build.gradle<\/em><\/strong> file and add the following code in the <strong><em>dependencies<\/em><\/strong> section:&nbsp;<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>implementation fileTree(dir: \"libs\", include: [\"*.aar\"])&nbsp;\n\nimplementation('io.socket:socket.io-client:1.0.0') {&nbsp;\n\n\u202f \u202f \u202f \u202f \/\/ Exclude org.json provided by Android \u202f \u202f&nbsp;&nbsp;\n\n\u202f \u202f exclude group: 'org.json', module: 'json'&nbsp;\n\n}&nbsp;\n\nimplementation 'android.arch.lifecycle:extensions:1.1.1'<\/code><\/pre>\n\n\n\n<p><strong>Process-2<\/strong>: <strong>An Alternative Approach to add. aar Files to Your Project<\/strong>&nbsp;<\/p>\n\n\n\n<p>This alternative method involves creating a new directory within your project and organizing the <strong><em>.aar<\/em><\/strong> files differently. So, this approach creates a module specifically for adding <strong><em>.aar<\/em><\/strong> files, enhancing project organization.&nbsp;<\/p>\n\n\n\n<ul>\n<li><strong>Create a New Directory:<\/strong> Go to the project root and create a new directory.&nbsp;<\/li>\n\n\n\n<li><strong>Modify <em>build.gradle<\/em> File:<\/strong> Add the following code into the <strong><em>build.gradle<\/em><\/strong> file within the new directory:&nbsp;<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>configurations.maybeCreate(\"default\")&nbsp;&nbsp;\n\nartifacts.add(\"default\", file('[nameOfTheAar].aar'))<\/code><\/pre>\n\n\n\n<ul>\n<li><strong>Place <\/strong><strong><em>.aar<\/em><\/strong><strong> Files<\/strong><strong><em>:<\/em><\/strong> Place both downloaded <strong><em>.aar<\/em><\/strong> files into this new directory, next to the <strong><em>build.gradle<\/em><\/strong> file.&nbsp;<\/li>\n\n\n\n<li><strong>Update <em>settings.gradle<\/em><\/strong>: Add the newly created directory to the <strong><em>settings.gradle<\/em><\/strong> file:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>include(\":path\/new-directory\")&nbsp;<\/code><\/pre>\n\n\n\n<ul>\n<li><strong>Include the Library:<\/strong> Now, include the newly created library into your application:&nbsp;<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>implementation project(\":path\/new-directory\", configuration = \"default\")<\/code><\/pre>\n\n\n\n<p>Now, once you integrate the Android archive file, it\u2019s time to define Your required device permissions as per your need and features in your <strong><em>AndroidManifest.xml<\/em><\/strong>:&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>&lt;uses-permission android:name=\"android.permission.CAMERA\"\/&gt; \u202f&nbsp;\n\n&lt;uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"\/&gt;&nbsp;\n\n&lt;uses-permission android:name=\"android.permission.RECORD_AUDIO\"\/&gt;&nbsp;\n\n&lt;uses-permission android:name=\"android.permission.INTERNET\" \/&gt;&nbsp;\n\n&lt;uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"\/&gt;&nbsp;&nbsp;\n\n&lt;uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"\/&gt;&nbsp;\n\n&lt;uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"\/&gt;&nbsp;\n\n&lt;uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"\/&gt;&nbsp;&nbsp;\n\n&lt;uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"\/&gt;&nbsp;\n\n&lt;uses-permission android:name=\"android.permission.BLUETOOTH\"\/&gt;&nbsp;\n\n&lt;uses-permission android:name=\"android.permission.BLUETOOTH_ADMIN\"\/&gt;&nbsp;\n\n&lt;uses-feature android:name=\"android.hardware.camera\"\/&gt;&nbsp;&nbsp;\n\n&lt;uses-feature android:name=\"android.hardware.camera.autofocus\"\/&gt; \u202f&nbsp;\n\n&lt;uses-feature android:glEsVersion=\"0x00020000\" android:required=\"true\"\/&gt;<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>Create Virtual rooms and Generate Token<\/strong>\u202f\u202f&nbsp;<\/h5>\n\n\n\n<p>\u202fBefore diving into the RTC (Real-Time Communication) session, we need to create a token for a specific Room ID. Therefore, this token is crucial for connecting to the EnableX Platform and gaining access to the virtual room where the RTC session will take place.&nbsp;<\/p>\n\n\n\n<p><strong>Create Virtual Room<\/strong>\u202f\u202f&nbsp;<\/p>\n\n\n\n<p>To create a room, make an <strong>HTTP POST<\/strong> request to the following API route: <a href=\"https:\/\/api.enablex.io\/video\/v2\/rooms\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/api.enablex.io\/video\/v2\/rooms<\/a>. However, you need to include the necessary parameters and values in the request body, which should be in JSON format. So,for example:\u202f\u202f&nbsp;<\/p>\n\n\n\n<p>\u202f&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>{\u202f\u202f&nbsp;\n\n\u202f \"name\": \"Topic or Room Title\",\u202f\u202f&nbsp;\n\n\u202f \"owner_ref\": \"xyz\",\u202f\u202f&nbsp;\n\n\u202f \"settings\": {\u202f\u202f&nbsp;\n\n\u202f \u202f \"description\": \"Descriptive text\",\u202f\u202f&nbsp;\n\n\u202f \u202f \"mode\": \"group\",\u202f\u202f&nbsp;\n\n\u202f \u202f \"scheduled\": false,\u202f\u202f&nbsp;\n\n\u202f \u202f \"adhoc\": false,\u202f\u202f&nbsp;\n\n\u202f \u202f \"duration\": 30,\u202f\u202f&nbsp;\n\n\u202f \u202f \u2026\u2026\u2026.\u202f\u202f&nbsp;\n\n\u202f\u202f\u202f \u2026\u2026..\u202f\u202f&nbsp;\n\n\u202f \u202f\u202f\u202f&nbsp;\n\n\u202f \u202f \"role_based_recording\": {\u202f\u202f&nbsp;\n\n\u202f \u202f \u202f \"moderator\": \"audiovideo\",\u202f\u202f&nbsp;\n\n\u202f \u202f \u202f \"participant\": \"audio\"\u202f\u202f&nbsp;\n\n\u202f \u202f },\u202f\u202f&nbsp;\n\n\u202f \u202f \"live_recording\": {\u202f\u202f&nbsp;\n\n\u202f \u202f \u202f \"auto_recording\": true,\u202f\u202f&nbsp;\n\n\u202f \u202f \u202f \"url\": \"https:\/\/your-custom-view-url\"\u202f\u202f&nbsp;\n\n\u202f \u202f }\u202f\u202f&nbsp;\n\n\u202f },\u202f\u202f&nbsp;\n\n\u202f \"sip\": {\u202f\u202f&nbsp;\n\n\u202f \u202f \"enabled\": false\u202f\u202f&nbsp;\n\n\u202f },\u202f\u202f&nbsp;\n\n\u202f \"data\": {\u202f\u202f&nbsp;\n\n\u202f \u202f \"custom_key\": \"\"\u202f\u202f&nbsp;\n\n\u202f }\u202f\u202f&nbsp;\n\n}<\/code><\/pre>\n\n\n\n<p>\u202fTo know more about Create Rooms, please read <a href=\"https:\/\/www.enablex.io\/developer\/video-api\/server-api\/rooms-route\/#create-room\" target=\"_blank\" rel=\"noreferrer noopener\">Create Room to carry out RTC Session <\/a>.\u202f\u202f&nbsp;<\/p>\n\n\n\n<p>\u202f&nbsp;<\/p>\n\n\n\n<p><strong>Generate Token<\/strong>\u202f\u202f&nbsp;<\/p>\n\n\n\n<p>\u202f&nbsp;<\/p>\n\n\n\n<p>To create a token for joining an RTC session on the EnableX platform, make a POST request to the API route: <a href=\"https:\/\/api.enablex.io\/v2\/rooms\/%7broom-id%7d\/tokens\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/api.enablex.io\/v2\/rooms\/{room-id}\/tokens<\/a> where {room-id} is the ID of the room you want to join. Therefore, for example:\u202f\u202f&nbsp;<\/p>\n\n\n\n<p>\u202f&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>POST https:\/\/api.enablex.io\/video\/v2\/rooms\/{room_id}\/tokens\u202f\u202f&nbsp;\n\nAuthorization: Basic XXXXXXX\u202f\u202f&nbsp;\n\nContent-Type: application\/json\u202f\u202f&nbsp;\n\n\u202f\u202f&nbsp;\n\n{\u202f\u202f&nbsp;\n\n\u202f \u202f \u202f\"name\": \"User Name\",\u202f\u202f&nbsp;\n\n\u202f \u202f \u202f\"role\": \"participant\",\u202f\u202f&nbsp;\n\n\u202f \u202f \u202f\"user_ref\": \"XXX\",\u202f\u202f&nbsp;\n\n\u202f \u202f \u202f\"data\": {\u202f\u202f&nbsp;\n\n\u202f \u202f \u202f \u202f \"custom_key\": \"String\",\u202f\u202f&nbsp;\n\n\u202f \u202f \"any_key\": \"String\"\u202f\u202f&nbsp;\n\n\u202f \u202f \u202f}\u202f\u202f&nbsp;\n\n}<\/code><\/pre>\n\n\n\n<p>\u202f\u202f&nbsp;<\/p>\n\n\n\n<p>Upon successful creation, the API will respond with a JSON object containing the result and the generated token (<strong><em>JWT_WEB_TOKEN<\/em><\/strong>).\u202f\u202f&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>{\u202f\u202f&nbsp;\n\n\u202f \u202f \u202f\"result\": 0,\u202f\u202f\u202f&nbsp;\n\n\u202f \u202f \u202f\"token\": \"JWT_WEB_TOKEN\"\u202f\u202f&nbsp;\n\n\u202f}<\/code><\/pre>\n\n\n\n<p>\u202f\u202f&nbsp;<\/p>\n\n\n\n<p>To know more about Token, please read <a href=\"https:\/\/www.enablex.io\/developer\/video-api\/server-api\/rooms-route\/#create-token\" target=\"_blank\" rel=\"noreferrer noopener\">Create Token to join a Room<\/a>.\u202f\u202f&nbsp;<\/p>\n\n\n\n<p>\u202f&nbsp;<\/p>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>Connect to a Room, Initiate &amp; Publish Stream<\/strong>&nbsp;<\/h5>\n\n\n\n<p>With the token in hand, you can now connect to the virtual room. Once connected, initiate a local stream and publish it into the virtual room.  However, this process involves several steps, and you can follow the detailed documentation on <a href=\"https:\/\/www.enablex.io\/developer\/video-api\/client-api\/android-toolkit\/room-connection\/#connect-room\" target=\"_blank\" rel=\"noreferrer noopener\">how to connect to a room and initiate the stream<\/a>.&nbsp;&nbsp;<\/p>\n\n\n\n<p><strong>Play Stream<\/strong>&nbsp;<\/p>\n\n\n\n<p>After successfully connecting and publishing the local stream, we need to display the stream within the app. To achieve this, we use the <strong><em>EnxPlayerView object<\/em><\/strong>. However, here&#8217;s how you can set up and render the stream:&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>\/\/ Create an EnxPlayerView&nbsp;\n\nprivate var enxPlayerView: EnxPlayerView? = null&nbsp;\n\nenxPlayerView = EnxPlayerView(this, EnxPlayerView.ScalingType.SCALE_ASPECT_BALANCED, true)&nbsp;\n\n\/\/ Attach and render the stream to the player view&nbsp;\n\nlocalStream!!.attachRenderer(enxPlayerView)&nbsp;\n\n\/\/ Add the player view to your desired layout&nbsp;\n\nyourView?.addView(enxPlayerView)<\/code><\/pre>\n\n\n\n<p>However, for more information on handling player views, refer to the documentation provided- <a href=\"https:\/\/www.enablex.io\/developer\/video-api\/client-api\/android-toolkit\/play-stream\/\" target=\"_blank\" rel=\"noreferrer noopener\">Play Stream.<\/a>&nbsp;<\/p>\n\n\n\n<p><strong>Handle Server Events<\/strong>&nbsp;<\/p>\n\n\n\n<p>During the RTC session, the EnableX Platform may emit various events related to the ongoing session, triggered by user interactions or other factors. Therefore, to handle these events effectively, we utilize callback methods.&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>\/* Example of Call Back Methods *\/&nbsp;\n\n\/* Call Back Method: onRoomConnected&nbsp;&nbsp;\n\nHandles successful connection to the Virtual Room *\/&nbsp;&nbsp;\n\noverride fun onRoomConnected(enxRoom: EnxRoom?, jsonObject: JSONObject) {&nbsp;\n\n\u202f \u202f \/* You may initiate and publish stream *\/&nbsp;\n\n}&nbsp;\n\n\/* Call Back Method: onRoomError&nbsp;\n\n\u202fError handler when room connection fails *\/&nbsp;\n\noverride fun onRoomError(jsonObject: JSONObject) {&nbsp;\n\n}&nbsp;&nbsp;\n\n\/* Call Back Method: onStreamAdded&nbsp;\n\n\u202fTo handle any new stream added to the Virtual Room *\/&nbsp;\n\noverride fun onStreamAdded(enxStream: EnxStream?) {&nbsp;\n\n\u202f \u202f \/* Subscribe Remote Stream *\/&nbsp;\n\n}&nbsp;&nbsp;\n\n\/* Call Back Method: onActiveTalkerList&nbsp;\n\n\u202fTo handle any time Active Talker list is updated *\/&nbsp;\n\n\u202f&nbsp;&nbsp;\n\n\u202foverride fun onActiveTalkerList(jsonObject: JSONObject) {&nbsp;\n\n\u202f \u202f \/* Handle Stream Players *\/&nbsp;\n\n}<\/code><\/pre>\n\n\n\n<p>Building a video streaming app for Android using the EnableX Android SDK, coupled with WebRTC library, is a winning combination that empowers developers to create cutting-edge real-time communication applications.&nbsp;<\/p>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>FAQs<\/strong>&nbsp;<\/h5>\n\n\n\n<p><strong>What are the prerequisites to build a 1-to-1 RTC Android application using EnableX?<\/strong>&nbsp;<\/p>\n\n\n\n<ul>\n<li>Your App ID and App Key.&nbsp;<\/li>\n\n\n\n<li>The Sample Android Client.&nbsp;<\/li>\n\n\n\n<li>An Application Server set up to provision Web Service API for the Android app<strong>.<\/strong>&nbsp;<\/li>\n<\/ul>\n\n\n\n<p><strong>How can I obtain the App ID and App Key from EnableX for my Android application?<\/strong>&nbsp;<\/p>\n\n\n\n<p>After registering on the EnableX portal, create your application. However, your App ID and App Key will be delivered to your email.&nbsp;<\/p>\n\n\n\n<p><strong>Is there a sample Android client available for testing the video streaming feature?<\/strong>&nbsp;<\/p>\n\n\n\n<p>Yes, you can find the sample Android client on <a href=\"https:\/\/github.com\/EnableX\/One-to-One-Video-Call-Webrtc-Application-Sample-for-kotlin\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub<\/a>.&nbsp;<\/p>\n\n\n\n<p><strong>How do I configure my Android client to use the EnableX platform?<\/strong>&nbsp;<\/p>\n\n\n\n<p>Navigate to <strong><em>WebConstants<\/em><\/strong> in the app and modify the given settings as per your requirements. Make sure to use your App ID and App Key for authentication.&nbsp;<\/p>\n\n\n\n<p><strong>Can I test the EnableX video streaming on an emulator or simulator?<\/strong>&nbsp;<\/p>\n\n\n\n<p>While you can run the app on an emulator, note that the local stream will not be created. So, It&#8217;s recommended to test on a real device.&nbsp;<\/p>\n\n\n\n<p><strong>How do I set up my own application server for the EnableX video streaming feature?<\/strong>&nbsp;<\/p>\n\n\n\n<p>For those wanting to set up their own servers, refer to the sample code provided for NodeJS and PHP. Ensure your Android Client endpoint connects to this server for virtual room creation and token generation.&nbsp;<\/p>\n\n\n\n<p><strong>What is the purpose of the EnableX Android SDK, and where can I get it?<\/strong>&nbsp;<\/p>\n\n\n\n<p>The EnableX <a href=\"https:\/\/www.enablex.io\/developer\/wp-content\/uploads\/webrtc\/android\/Enx_WebRTC_Android.zip\" target=\"_blank\" rel=\"noreferrer noopener\">Android SDK<\/a> facilitates communication between Android apps and EnableX servers. You can download the latest version from the EnableX website.&nbsp;<\/p>\n\n\n\n<p><strong>How can I play a video stream in my Android application using EnableX?<\/strong>&nbsp;<\/p>\n\n\n\n<p>To play a video stream, you need to use the <strong><em>EnxPlayerView<\/em><\/strong> object within the app. Therefore, this object will render the video stream, providing a seamless user experience.&nbsp;<\/p>\n\n\n\n<p><strong>How do I handle various server events during a video streaming session in my Android app?<\/strong>&nbsp;<\/p>\n\n\n\n<p>The EnableX platform emits numerous events related to the ongoing RTC session. Using callback methods, developers can handle these events. Therefore, for instance, the <strong><em>onRoomConnected<\/em><\/strong> method is called when successfully connecting to a virtual room.&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Video Live streaming apps have become a necessity these days. Among the various platforms available, EnableX stands out as a reliable choice for developers to choose for video streaming apps. However, This blog delves deep into the process of building a Video Streaming App using the EnableX Android SDK.&nbsp; The EnableX Android SDK allows developers &#8230;<\/p>\n","protected":false},"author":25,"featured_media":3308,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":true,"footnotes":""},"categories":[15,23,212,93,98],"tags":[243,138,141,50,75],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Build Video Streaming App for Android with Complete Solution<\/title>\n<meta name=\"description\" content=\"Explore complete guide solution for building a powerful and feature-rich video streaming app for Android. Follow the steps-by-steps guide.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.enablex.io\/insights\/video-streaming-app-for-android\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Build Video Streaming App for Android with Complete Solution\" \/>\n<meta property=\"og:description\" content=\"Explore complete guide solution for building a powerful and feature-rich video streaming app for Android. Follow the steps-by-steps guide.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.enablex.io\/insights\/video-streaming-app-for-android\/\" \/>\n<meta property=\"og:site_name\" content=\"Insights about video API, SMS API; WhatsApp for Business API\" \/>\n<meta property=\"article:published_time\" content=\"2023-12-11T07:59:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-24T09:07:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2023\/12\/ImageBuilding-a-Video-Streaming-App-for-Android-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1536\" \/>\n\t<meta property=\"og:image:height\" content=\"541\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jason Wills\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@enablexio\" \/>\n<meta name=\"twitter:site\" content=\"@enablexio\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jason Wills\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Build Video Streaming App for Android with Complete Solution","description":"Explore complete guide solution for building a powerful and feature-rich video streaming app for Android. Follow the steps-by-steps guide.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.enablex.io\/insights\/video-streaming-app-for-android\/","og_locale":"en_US","og_type":"article","og_title":"Build Video Streaming App for Android with Complete Solution","og_description":"Explore complete guide solution for building a powerful and feature-rich video streaming app for Android. Follow the steps-by-steps guide.","og_url":"https:\/\/www.enablex.io\/insights\/video-streaming-app-for-android\/","og_site_name":"Insights about video API, SMS API; WhatsApp for Business API","article_published_time":"2023-12-11T07:59:13+00:00","article_modified_time":"2025-07-24T09:07:09+00:00","og_image":[{"width":1536,"height":541,"url":"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2023\/12\/ImageBuilding-a-Video-Streaming-App-for-Android-1.png","type":"image\/png"}],"author":"Jason Wills","twitter_card":"summary_large_image","twitter_creator":"@enablexio","twitter_site":"@enablexio","twitter_misc":{"Written by":"Jason Wills","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.enablex.io\/insights\/video-streaming-app-for-android\/#article","isPartOf":{"@id":"https:\/\/www.enablex.io\/insights\/video-streaming-app-for-android\/"},"author":{"name":"Jason Wills","@id":"https:\/\/www.enablex.io\/insights\/#\/schema\/person\/422d2b153c3c96827da141c6446d11a3"},"headline":"Building a Video Streaming App for Android with EnableX: A Step-by-Step Guide\u00a0\u00a0","datePublished":"2023-12-11T07:59:13+00:00","dateModified":"2025-07-24T09:07:09+00:00","mainEntityOfPage":{"@id":"https:\/\/www.enablex.io\/insights\/video-streaming-app-for-android\/"},"wordCount":1867,"publisher":{"@id":"https:\/\/www.enablex.io\/insights\/#organization"},"keywords":["android video call","video api","video call api","video chat api","video conferencing"],"articleSection":["Blog","TechTalks","Video API","Video API","Video Meeting"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.enablex.io\/insights\/video-streaming-app-for-android\/","url":"https:\/\/www.enablex.io\/insights\/video-streaming-app-for-android\/","name":"Build Video Streaming App for Android with Complete Solution","isPartOf":{"@id":"https:\/\/www.enablex.io\/insights\/#website"},"datePublished":"2023-12-11T07:59:13+00:00","dateModified":"2025-07-24T09:07:09+00:00","description":"Explore complete guide solution for building a powerful and feature-rich video streaming app for Android. Follow the steps-by-steps guide.","breadcrumb":{"@id":"https:\/\/www.enablex.io\/insights\/video-streaming-app-for-android\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.enablex.io\/insights\/video-streaming-app-for-android\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.enablex.io\/insights\/video-streaming-app-for-android\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.enablex.io\/insights\/"},{"@type":"ListItem","position":2,"name":"Building a Video Streaming App for Android with EnableX: A Step-by-Step Guide\u00a0\u00a0"}]},{"@type":"WebSite","@id":"https:\/\/www.enablex.io\/insights\/#website","url":"https:\/\/www.enablex.io\/insights\/","name":"Enablex","description":"","publisher":{"@id":"https:\/\/www.enablex.io\/insights\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.enablex.io\/insights\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.enablex.io\/insights\/#organization","name":"Enablex","url":"https:\/\/www.enablex.io\/insights\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.enablex.io\/insights\/#\/schema\/logo\/image\/","url":"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2023\/05\/EnableX-Logo-01.png","contentUrl":"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2023\/05\/EnableX-Logo-01.png","width":17382,"height":3567,"caption":"Enablex"},"image":{"@id":"https:\/\/www.enablex.io\/insights\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/twitter.com\/enablexio","https:\/\/www.linkedin.com\/company\/vcloudx"]},{"@type":"Person","@id":"https:\/\/www.enablex.io\/insights\/#\/schema\/person\/422d2b153c3c96827da141c6446d11a3","name":"Jason Wills","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.enablex.io\/insights\/#\/schema\/person\/image\/","url":"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2025\/05\/envato-labs-ai-f14f6981-d7f8-4c3e-9234-00323c7d5ca0-96x96.jpg","contentUrl":"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2025\/05\/envato-labs-ai-f14f6981-d7f8-4c3e-9234-00323c7d5ca0-96x96.jpg","caption":"Jason Wills"},"description":"Jason works behind the scenes at EnableX, helping to turn complex tech into practical tools that developers and businesses can actually use. With several years of experience in product development and platform architecture, he focuses on making communication technologies simpler, smarter and easier to build with. Whether he's writing step-by-step guides, product tips or explaining how our APIs work, Jason keeps things clear and useful.","sameAs":["https:\/\/www.enablex.io\/","https:\/\/www.linkedin.com\/company\/vcloudx\/"],"url":"https:\/\/www.enablex.io\/insights\/author\/jason-wills\/"}]}},"_links":{"self":[{"href":"https:\/\/www.enablex.io\/insights\/wp-json\/wp\/v2\/posts\/3248"}],"collection":[{"href":"https:\/\/www.enablex.io\/insights\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.enablex.io\/insights\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.enablex.io\/insights\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/www.enablex.io\/insights\/wp-json\/wp\/v2\/comments?post=3248"}],"version-history":[{"count":0,"href":"https:\/\/www.enablex.io\/insights\/wp-json\/wp\/v2\/posts\/3248\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.enablex.io\/insights\/wp-json\/wp\/v2\/media\/3308"}],"wp:attachment":[{"href":"https:\/\/www.enablex.io\/insights\/wp-json\/wp\/v2\/media?parent=3248"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.enablex.io\/insights\/wp-json\/wp\/v2\/categories?post=3248"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.enablex.io\/insights\/wp-json\/wp\/v2\/tags?post=3248"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}