Как создать динамический аудиоплеер на Android с базой данных Firebase Realtime?

Опубликовано: 30 Ноября, 2021

Многим приложениям для онлайн-музыкальных плееров требуется так много песен и аудиофайлов внутри своих приложений. Таким образом, чтобы обрабатывать такое количество файлов, мы должны либо использовать любой тип базы данных, либо управлять всеми этими файлами. Хранение файлов внутри вашего приложения будет не лучшим подходом. Итак, в этой статье мы рассмотрим реализацию динамического аудиоплеера в нашем приложении для Android.

Что мы собираемся построить в этой статье?

В этой статье мы будем создавать простое приложение, в котором мы будем воспроизводить аудиофайл с веб-URL-адреса, и мы будем изменять этот URL-адрес аудиофайла во время выполнения, чтобы обновить наш аудиофайл. Ниже приведен пример видео, чтобы понять, что мы собираемся делать в этой статье. Обратите внимание, что мы собираемся реализовать этот проект на языке Java.

Пошаговая реализация

Шаг 1. Создайте новый проект

Чтобы создать новый проект в Android Studio, обратитесь к разделу «Как создать / запустить новый проект в Android Studio». Обратите внимание, что выберите Java в качестве языка программирования.

Шаг 2. Подключите приложение к Firebase

После создания нового проекта. Перейдите к параметру Инструменты на верхней панели. Внутри этого нажмите Firebase. После нажатия на Firebase вы можете увидеть правый столбец, упомянутый ниже на снимке экрана.

Внутри этого столбца перейдите к базе данных Firebase Realtime. Нажмите на эту опцию, и вы увидите две опции: Подключить приложение к Firebase и Добавить базу данных Firebase Realtime в свое приложение. Нажмите на опцию Подключить сейчас, и ваше приложение будет подключено к Firebase. После этого нажмите на второй вариант, и теперь ваше приложение подключено к Firebase.

После завершения этого процесса вы увидите экран ниже.

Теперь убедитесь, что ваше приложение подключено к Firebase или нет. Перейдите в свой файл build.gradle. Перейдите в файл app> Gradle Scripts> build.gradle (app) и убедитесь, что указанная ниже зависимость добавлена в ваш раздел зависимостей.

implementation ‘com.google.firebase:firebase-database:19.6.0’

После добавления этой зависимости добавьте зависимость ExoPlayer в свой файл Gradle.

Шаг 3. Добавление разрешения для Интернета

Поскольку мы загружаем наше видео из Интернета, мы должны добавить разрешения для Интернета в файле манифеста. Перейдите в приложение> файл AndroidManifest.xml и добавьте в него указанные ниже разрешения.

XML

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

Шаг 4. Работа с файлом activity_main.xml

Перейдите в файл activity_main.xml и обратитесь к следующему коду. Ниже приведен код файла activity_main.xml.

XML

<? xml version = "1.0" encoding = "utf-8" ?>
< RelativeLayout
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 >

Шаг 5: Работа с файлом MainActivity.java

Перейдите в файл MainActivity.java и ознакомьтесь со следующим кодом. Ниже приведен код файла MainActivity.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." состоянии "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();
}
}
}

Шаг 6. Добавление URL-адреса для вашего аудиофайла в Firebase Console

Для добавления аудио URL в Firebase Console. Найдите Firebase в своем браузере и нажмите кнопку «Перейти в консоль» в правом верхнем углу, как показано на снимке экрана ниже.

После нажатия на опцию «Перейти в консоль» вы увидите свой проект. Щелкните название своего проекта в доступном списке проектов.

После нажатия на ваш проект. Нажмите на опцию Realtime Database в левом окне.

После нажатия на эту опцию вы увидите экран с правой стороны. На этой странице нажмите на опцию Rules, которая присутствует на верхней панели. Вы увидите экран ниже.

В этом проекте мы добавляем наши правила как истинные как для чтения, так и для записи, потому что мы не используем никакой аутентификации для проверки нашего пользователя. Итак, в настоящее время мы устанавливаем для него значение true, чтобы протестировать наше приложение. После изменения ваших правил. Нажмите кнопку публикации в правом верхнем углу, и ваши правила будут сохранены там. Теперь снова вернитесь во вкладку Data. Теперь мы будем добавлять наши данные в Firebase вручную из самой Firebase.

Внутри базы данных Firebase Realtime. Перейдите на вкладку "Данные". Внутри этой вкладки в разделе базы данных щелкните значок «+». После нажатия на значок «+» вы увидите два поля ввода, которые являются полями «Имя» и «Значение». В поле «Имя» вы должны добавить ссылку на ваш видеофайл, в нашем случае это « url ». И в нашем поле значения мы должны добавить URL-адрес нашего аудиофайла. После добавления значения в это поле. Нажмите кнопку «Добавить», и ваши данные будут добавлены в Firebase Console.

После добавления URL-адреса вашего видео. Теперь запустите ваше приложение и посмотрите результат работы приложения ниже:

Выход:

Вы можете динамически изменять URL-адрес вашего аудио.

Хотите более динамичную и конкурентную среду для изучения основ Android?
Щелкните здесь, чтобы перейти к уникальному руководству, составленному нашими экспертами с целью мгновенно подготовить вашу отрасль!