How to Play Audio from URL in Android?

20 Jan, 2021
Many apps require the feature to add the audio feature in their application and there so many audio files that we have to play inside our application. If we will store so many audio files inside our application, then it will increase the size of the app and this may reduce the user base due to the huge app size. So the better way to tackle this problem is to store the audio files in your database and access them from their unique web URL. In this article, we will take a look at playing an audio file from URL in Android. 
We will be building a simple application in which we will display two buttons for play and pause of our audio. We will be loading that audio from the URL. Below is the video in which we will get to see what we are going to build in this article. Now let’s move towards the implementation. Note that we are going to implement this project using the Java language. 
Step 1: Create a New Project
To create a new project in Android Studio please refer to How to Create/Start a New Project in Android Studio. Note that select Java as the programming language.
Step 2: Working with the activity_main.xml file
Go to the activity_main.xml file and refer to the following code. Below is the code for the activity_main.xml file.
XML
<?xml version="1.0" encoding="utf-8"?><RelativeLayout     xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context=".MainActivity">      <!--Button for playing audio-->    <Button        android:id="@+id/idBtnPlay"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerInParent="true"        android:text="Play Audio file"        android:textAllCaps="false" />      <!--Button for pausing the audio-->    <Button        android:id="@+id/idBtnPause"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@id/idBtnPlay"        android:layout_centerInParent="true"        android:text="Pause Audio"        android:textAllCaps="false" />      </RelativeLayout>
Step 3: Adding permissions to the AndroidManifest.xml file
As we are playing audio from URL in android. So we will have to add Internet permissions to load URL. Add below permissions to the AndroidManifest.xml file.
XML
<!-- Permissions of internet --><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Step 4: Working with the MainActivity.java file
Go to the MainActivity.java file and refer to the following code. Below is the code for the MainActivity.java file. Comments are added inside the code to understand the code in more detail.
Java
import android.media.AudioManager;import android.media.MediaPlayer;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.Toast;  import androidx.appcompat.app.AppCompatActivity;  import java.io.IOException;  public class MainActivity extends AppCompatActivity {      // creating a variable for     // button and media player    Button playBtn, pauseBtn;    MediaPlayer mediaPlayer;      @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);          // initializing our buttons        playBtn = findViewById(R.id.idBtnPlay);        pauseBtn = findViewById(R.id.idBtnPause);                  // setting on click listener for our play and pause buttons.        playBtn.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                // calling method to play audio.                playAudio();            }        });                  pauseBtn.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                // checking the media player                 // if the audio is playing or not.                if (mediaPlayer.isPlaying()) {                    // pausing the media player if media player                     // is playing we are calling below line to                    // stop our media player.                    mediaPlayer.stop();                    mediaPlayer.reset();                    mediaPlayer.release();                                          // below line is to display a message                     // when media player is paused.                    Toast.makeText(MainActivity.this, "Audio has been paused", Toast.LENGTH_SHORT).show();                } else {                    // this method is called when media                     // player is not playing.                    Toast.makeText(MainActivity.this, "Audio has not played", Toast.LENGTH_SHORT).show();                }            }        });    }      private void playAudio() {          String audioUrl = "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3";                  // initializing media player        mediaPlayer = new MediaPlayer();                  // below line is use to set the audio         // stream type for our media player.        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);          // below line is use to set our         // url to our media player.        try {            mediaPlayer.setDataSource(audioUrl);            // below line is use to prepare            // and start our media player.            mediaPlayer.prepare();            mediaPlayer.start();          } catch (IOException e) {            e.printStackTrace();        }        // below line is use to display a toast message.        Toast.makeText(this, "Audio started playing..", Toast.LENGTH_SHORT).show();    }}
After adding the code now run your app and see the output of the app. 
Note: After clicking on the play button wait for some time as we are loading our audio file from the URL. So it will take a little bit of time to load our audio file. 
android
Technical Scripter 2020
Android
Java
Technical Scripter
Java
Android
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
How to Add Views Dynamically and Store Data in Arraylist in Android?
Android SDK and it's Components
How to Communicate Between Fragments in Android?
Flutter - Custom Bottom Navigation Bar
Retrofit with Kotlin Coroutine in Android
Arrays in Java
Split() String method in Java with examples
Arrays.sort() in Java with examples
Object Oriented Programming (OOPs) Concept in Java
Reverse a string in Java