在一个Android活动中,我正在使用以下解决方案来创建一个无循环的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的行为足以让应用保持活力并播放声音?
如果你想在用户移动到其他应用程序或锁定屏幕时播放音乐,请使用前台服务,并确保在服务处于前台时向用户显示通知。
不建议使用不同的MediaPlayer对象来循环播放音乐,我建议你使用ExoPlayer来实现上述功能。
你可以使用下面的代码来循环播放音乐。
exoPlayer!!.repeatMode = Player.REPEAT_MODE_ONE
观看本教程 。用ExoPlayer构建功能丰富的媒体应用(Google IO '18) 由谷歌的Android开发者团队提供。