¿Cómo crear un reproductor de audio dinámico en Android con Firebase Realtime Database?

Muchas aplicaciones de reproducción de música en línea requieren tantas canciones y archivos de audio dentro de sus aplicaciones. Entonces, para manejar tantos archivos, tenemos que usar cualquier tipo de base de datos y administrar todos estos archivos. Almacenar archivos dentro de su aplicación no será un mejor enfoque. Entonces, en este artículo, veremos la implementación de un reproductor de audio dinámico en nuestra aplicación de Android. 

¿Qué vamos a construir en este artículo? 

En este artículo, crearemos una aplicación simple en la que reproduciremos un archivo de audio desde una URL web y cambiaremos esa URL de archivo de audio en tiempo de ejecución para actualizar nuestro archivo de audio. qué

Implementación paso a paso

Paso 1: Crear un nuevo proyecto

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Java como lenguaje de programación.

Paso 2: conecta tu aplicación a Firebase  

Después de crear un nuevo proyecto. Navegue a la opción Herramientas en la barra superior. Dentro de eso, haga clic en Firebase. Después de hacer clic en Firebase, puede ver la columna de la derecha que se menciona a continuación en la captura de pantalla.  

Dentro de esa columna, navegue hasta Firebase Realtime Database. Haga clic en esa opción y verá dos opciones en Conectar la aplicación a Firebase y Agregar Firebase Realtime Database a su aplicación. Haga clic en la opción Conectar ahora y su aplicación se conectará a Firebase. Después de eso, haga clic en la segunda opción y ahora su aplicación está conectada a Firebase.  

Después de completar este proceso, verá la siguiente pantalla.  

Ahora verifique que su aplicación esté conectada a Firebase o no. Vaya a su archivo build.gradle. Vaya a la aplicación > Gradle Scripts > archivo build.gradle (aplicación) y asegúrese de que la siguiente dependencia se agregue en su sección de dependencias.  

implementación ‘com.google.firebase:firebase-database:19.6.0’

Después de agregar esta dependencia, agregue la dependencia de ExoPlayer en su archivo Gradle.  

Paso 3: Agregar permiso para Internet  

Como estamos cargando nuestro video desde Internet, tenemos que agregar permisos para Internet en el archivo Manifiesto. Navegue a la aplicación > archivo AndroidManifest.xml y agregue los siguientes permisos en él.  

XML

<!--Permissions for internet-->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Paso 4: trabajar con el archivo activity_main.xml

actividad_principal.xml actividad_principal.xml

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>

Paso 5: trabajar con el archivo MainActivity.java

MainActivity.java MainActivity.java

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.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
  
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
  
import java.io.IOException;
  
public class MainActivity extends AppCompatActivity {
  
    // creating a variable for
    // button and media player
    Button playBtn, pauseBtn;
    MediaPlayer mediaPlayer;
      
    // creating a string for storing
    // our audio url from firebase.
    String audioUrl;
      
    // creating a variable for our Firebase Database.
    FirebaseDatabase firebaseDatabase;
      
    // creating a variable for our 
    // Database Reference for Firebase.
    DatabaseReference databaseReference;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
          
        // below line is used to get the instance 
        // of our Firebase database.
        firebaseDatabase = FirebaseDatabase.getInstance();
          
        // below line is used to get reference for our database.
        databaseReference = firebaseDatabase.getReference("url");
  
        // calling add value event listener method for getting the values from database.
        databaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                // this method is call to get the realtime updates in the data.
                // this method is called when the data is changed in our Firebase console.
                // below line is for getting the data from snapshot of our database.
                audioUrl = snapshot.getValue(String.class);
                // after getting the value for our audio url we are storing it in our string.
            }
  
            @Override
            public void onCancelled(@NonNull DatabaseError error) {
                // calling on cancelled method when we receive any error or we are not able to get the data.
                Toast.makeText(MainActivity.this, "Fail to get audio url.", Toast.LENGTH_SHORT).show();
            }
        });
  
        // 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(audioUrl);
            }
        });
        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) {
        // 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);
        try {
            // below line is use to set our 
            // url to our media player.
            mediaPlayer.setDataSource(audioUrl);
              
            // below line is use to prepare 
            // and start our media player.
            mediaPlayer.prepare();
            mediaPlayer.start();
              
            // below line is use to display a toast message.
            Toast.makeText(this, "Audio started playing..", Toast.LENGTH_SHORT).show();
        } catch (IOException e) {
            // this line of code is use to handle error while playing our audio file.
            Toast.makeText(this, "Error found is " + e, Toast.LENGTH_SHORT).show();
        }
    }
}

Paso 6: Agregar URL para su archivo de audio en Firebase Console  

Para agregar URL de audio en Firebase Console. Busque Firebase en su navegador y haga clic en la opción Ir a la consola en la esquina superior derecha, como se muestra en la siguiente captura de pantalla.  

 Después de hacer clic en la opción Ir a la consola, podrá ver su proyecto. Haga clic en el nombre de su proyecto de la lista de proyectos disponibles. 

Después de hacer clic en su proyecto. Haga clic en la opción Base de datos en tiempo real en la ventana izquierda.  

Después de hacer clic en esta opción, verá la pantalla en el lado derecho. En esta página, haga clic en la opción Reglas que se encuentra en la barra superior. Verá la siguiente pantalla.  

En este proyecto, estamos agregando nuestras reglas como verdaderas tanto para lectura como para escritura porque no estamos usando ninguna autenticación para verificar a nuestro usuario. Por lo tanto, actualmente lo estamos configurando como verdadero para probar nuestra aplicación. Después de cambiar sus reglas. Haga clic en el botón publicar en la esquina superior derecha y sus reglas se guardarán allí. Ahora vuelva de nuevo a la pestaña Datos. Ahora agregaremos nuestros datos a Firebase manualmente desde el mismo Firebase.

Dentro de la base de datos en tiempo real de Firebase. Navegue a la pestaña Datos. Dentro de esta pestaña en la sección de la base de datos, haga clic en el icono «+». Después de hacer clic en el ícono «+», verá dos campos de entrada que son los campos Nombre y Valor. Dentro del campo Nombre, debe agregar la referencia de su archivo de video, que en nuestro caso es » url «. Y en nuestro campo de valor, debemos agregar la URL de nuestro archivo de audio. Después de agregar el valor en este campo. Haga clic en el botón Agregar y sus datos se agregarán a Firebase Console.  

Después de agregar la URL de su video. Ahora ejecute su aplicación y vea el resultado de la aplicación a continuación: 

Producción:

Puedes cambiar la URL de tu audio dinámicamente. 

Publicación traducida automáticamente

Artículo escrito por chaitanyamunje y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *