Android 多个背景音乐循环播放

在开发 Android 应用程序时,经常会遇到需要在应用中播放背景音乐的需求。而有时候我们可能希望能够切换不同的背景音乐,并实现这些音乐的循环播放。本文将介绍如何在 Android 应用中实现多个背景音乐的循环播放。

实现思路

要实现多个背景音乐的循环播放,我们可以创建一个音乐管理类 MusicManager,该类负责管理所有的背景音乐资源,并提供接口供其他组件调用。在 MusicManager 中,我们可以使用 MediaPlayer 类来处理音乐的播放和循环。

MusicManager 类

下面是 MusicManager 类的代码示例:

public class MusicManager {
    private static MediaPlayer mediaPlayer;
    private static int currentMusicIndex = 0;
    private static List<Integer> musicList;

    public static void init(Context context) {
        mediaPlayer = new MediaPlayer();
        musicList = new ArrayList<>();
        musicList.add(R.raw.music1);
        musicList.add(R.raw.music2);
        // 添加更多音乐资源
    }

    public static void playNextMusic() {
        currentMusicIndex = (currentMusicIndex + 1) % musicList.size();
        playMusic(musicList.get(currentMusicIndex));
    }

    private static void playMusic(int musicResId) {
        if (mediaPlayer.isPlaying()) {
            mediaPlayer.stop();
            mediaPlayer.reset();
        }
        mediaPlayer = MediaPlayer.create(context, musicResId);
        mediaPlayer.setLooping(true);
        mediaPlayer.start();
    }

    public static void release() {
        if (mediaPlayer != null) {
            mediaPlayer.stop();
            mediaPlayer.release();
        }
    }
}

使用 MusicManager

在应用的 Activity 或 Fragment 中,我们可以调用 MusicManager 的接口来播放音乐。例如,我们可以在 Activity 的 onCreate 方法中初始化 MusicManager:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    
    MusicManager.init(this);
    MusicManager.playNextMusic();
}

当需要播放下一首音乐时,可以调用 MusicManager 的 playNextMusic 方法:

MusicManager.playNextMusic();

最后,在 Activity 的 onDestroy 方法中释放 MusicManager:

@Override
protected void onDestroy() {
    super.onDestroy();
    
    MusicManager.release();
}

类图

下面是 MusicManager 类的类图:

classDiagram
    class MusicManager {
        -MediaPlayer mediaPlayer
        -int currentMusicIndex
        -List<Integer> musicList
        +init(Context context)
        +playNextMusic()
        -playMusic(int musicResId)
        +release()
    }

旅行图

下面是一个旅行图示例,表示用户在应用中切换不同的背景音乐:

journey
    title Background Music Journey
    section Play Music
        Play -> Next: Click Next Button
    section Next
        Next -> Play: Play Next Music

通过以上代码示例和实现思路,我们可以在 Android 应用程序中实现多个背景音乐的循环播放功能。希望本文对你有所帮助!