首页 > 解决方案 > MediaPlayer 会继续在暂停的 Android 活动中播放吗?

问题描述

在 Android Activity 中,我使用以下解决方案来创建具有无缝循环的 MediaPlayer:

MediaPlayer mp1 = MediaPlayer.create(mContext, mResId);
MediaPlayer mp2 = MediaPlayer.create(mContext, mResId);

mp1.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mp) {
                mp1 = MediaPlayer.create(mContext, mResId);
                mp1.setOnCompletionListener(this);
                mp2.setNextMediaPlayer(mp1);

            }
        });

mp2.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mp) {
                mp2 = MediaPlayer.create(mContext, mResId);
                mp2.setOnCompletionListener(this);
                mp1.setNextMediaPlayer(mp2);
            }
        });

mp1.setNextMediaPlayer(mp2);
mp1.start();

如果用户正在使用另一个应用程序或锁定屏幕,该应用程序是否应该在无限期播放声音的情况下保持活动状态?是否建议使用前台服务,或者不断创建新的 MediaPlayers 的行为是否足以让应用程序保持活力并播放声音?

标签: androidandroid-mediaplayer

解决方案


如果您想在用户移动到其他应用程序或锁定屏幕时播放音乐,请使用前台服务并确保在服务处于前台时向用户显示通知。

不建议使用不同的 MediaPlayer 对象循环播放音乐。我建议你使用 ExoPlayer 来实现上述功能。

您可以使用以下代码循环播放音乐:

exoPlayer!!.repeatMode = Player.REPEAT_MODE_ONE

观看本教程:使用由 Google 的 Android 开发人员团队提供的ExoPlayer (Google I/O '18) 构建功能丰富的媒体应用程序。


推荐阅读