Android Studio 做一个 MP3 播放器 您所在的位置:网站首页 安卓上视频播放软件 Android Studio 做一个 MP3 播放器

Android Studio 做一个 MP3 播放器

2023-06-14 23:12| 来源: 网络整理| 查看: 265

关于 Android Studio 做一个 MP3 播放器:

Android Studio 本身提供了多个音频播放器组件,可以通过这些组件来实现音频播放功能,其中包括 MediaPlayer、SoundPool 和 ExoPlayer 等。官方推荐我们使用ExoPlayer因为功能更强大,但这里用MediaPlayer因为编写更简单。

在使用 MediaPlayer 实现 MP3 播放器时,需要注意以下几点:

在使用 MediaPlayer 之前,需要申请 “android.permission.READ_EXTERNAL_STORAGE” 权限,以读取本地储存的 MP3 文件。

在代码中,需要实例化一个 MediaPlayer 对象,并设置其数据源、音频焦点、循环播放等属性。

然后,通过调用 MediaPlayer 对象的 start() 方法,就可以开启播放功能。

这里提供一些关于 MediaPlayer 的资源链接:

官方文档:https://developer.android.com/reference/android/media/MediaPlayer实现 MP3 播放器的教程:https://www.androidhive.info/2012/03/android-building-audio-player-tutorial/GitHub 上的相关代码:https://github.com/DeweyReed/android_media_player 开发一个基本的 MP3 播放器需要以下步骤:

1.创建一个新的 Android Studio 项目

2.在 layout 文件夹中创建 UI 布局,包括播放/暂停按钮、进度条和音乐信息

3.在 drawable 文件夹中添加播放/暂停图标

4.导入 jaudiotagger 库以读取 MP3 文件的元数据

5.使用 MediaPlayer 类实现 MP3 文件的播放与控制

下面是一个简单的代码示例来实现这些步骤:

1.创建一个新的 Android Studio 项目

在 Android Studio 中,选择 File -> New -> New Project。在弹出窗口中,输入应用名称、包名和项目位置等信息创建新项目。

2.创建 UI 布局

在 res/layout 文件夹中创建一个名为 activity_main.xml 的布局文件。

该布局中包括音乐标题、艺术家、专辑封面、进度条和播放/暂停按钮。

3.导入播放/暂停图标

在 res/drawable 文件夹中添加两个名为 play_button.png 和 pause_button.png 的图标。您可以在网上搜索并下载这些图标,然后将它们拖放到 Android Studio 项目中。

4.导入 jaudiotagger 库

在项目的 build.gradle 文件中添加以下依赖项:

dependencies { implementation 'org.jaudiotagger:jaudiotagger:2.0.4' }

这个库可以用于读取 MP3 文件的元数据,例如标题、艺术家和专辑信息。

5.使用 MediaPlayer 类实现 MP3 文件的播放和控制

在 MainActivity.java 文件中添加以下代码:

public class MainActivity extends AppCompatActivity { private MediaPlayer mediaPlayer; private ImageButton playButton, pauseButton; private boolean isPlaying; private TextView songTitle, songArtist; private ImageView albumArt; private SeekBar seekBar; private Handler mHandler = new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); songTitle = findViewById(R.id.song_title); songArtist = findViewById(R.id.song_artist); albumArt = findViewById(R.id.song_album_art); seekBar = findViewById(R.id.seek_bar); playButton = findViewById(R.id.play_button); pauseButton = findViewById(R.id.pause_button); // Load the audio file from the asset folder into the MediaPlayer AssetFileDescriptor fileDescriptor = null; try { fileDescriptor = getAssets().openFd("sample_music.mp3"); mediaPlayer = new MediaPlayer(); mediaPlayer.setDataSource(fileDescriptor.getFileDescriptor(), fileDescriptor.getStartOffset(), fileDescriptor.getLength()); } catch (IOException e) { e.printStackTrace(); } // Initialize the MediaPlayer and UI elements mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { int duration = mp.getDuration(); seekBar.setMax(duration); songTitle.setText(mp.getMetadata("title")); songArtist.setText(mp.getMetadata("artist")); albumArt.setImageBitmap(mp.getMetadata("album art")); playButton.setVisibility(View.VISIBLE); pauseButton.setVisibility(View.GONE); isPlaying = false; } }); // Update the seek bar progress as the audio is playing mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { playButton.setVisibility(View.VISIBLE); pauseButton.setVisibility(View.GONE); isPlaying = false; } }); // Start the MediaPlayer when the play button is clicked playButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mediaPlayer != null && !isPlaying) { mediaPlayer.start(); mHandler.postDelayed(updateSeekBar, 100); playButton.setVisibility(View.GONE); pauseButton.setVisibility(View.VISIBLE); isPlaying = true; } } }); // Pause the MediaPlayer when the pause button is clicked pauseButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mediaPlayer != null && isPlaying) { mediaPlayer.pause(); mHandler.removeCallbacks(updateSeekBar); pauseButton.setVisibility(View.GONE); playButton.setVisibility(View.VISIBLE); isPlaying = false; } } }); } // Update the seek bar progress every second private Runnable updateSeekBar = new Runnable() { @Override public void run() { int currentPosition = mediaPlayer.getCurrentPosition(); seekBar.setProgress(currentPosition); mHandler.postDelayed(this, 1000); } }; // Release the MediaPlayer when the activity is destroyed @Override protected void onDestroy() { super.onDestroy(); if (mediaPlayer != null) { mediaPlayer.release(); mediaPlayer = null; } } }

该代码中加载了一个名为 sample_music.mp3 的 MP3 文件并将其作为 MediaPlayer 的数据源。在 MediaPlayer 准备好播放文件时,将更新 UI 元素,例如标题、艺术家、专辑封面和时长。另外,为了使播放和暂停按钮正常工作,我们需要检查 MediaPlayer 是否正在播放。

MP3 播放器的基本功能已经实现了。当您点击播放按钮时,音乐会开始播放,并且进度条会随着音乐进度而更新。同样,当您点击暂停按钮时,音乐会暂停。您可以根据自己的需要修改 UI 和播放器的一些设置。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有