android - 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 的行为是否足以让应用程序保持活力并播放声音?
解决方案
如果您想在用户移动到其他应用程序或锁定屏幕时播放音乐,请使用前台服务并确保在服务处于前台时向用户显示通知。
不建议使用不同的 MediaPlayer 对象循环播放音乐。我建议你使用 ExoPlayer 来实现上述功能。
您可以使用以下代码循环播放音乐:
exoPlayer!!.repeatMode = Player.REPEAT_MODE_ONE
观看本教程:使用由 Google 的 Android 开发人员团队提供的ExoPlayer (Google I/O '18) 构建功能丰富的媒体应用程序。
推荐阅读
- visual-studio-code - 在 Raspberry Pi / Debian Linux 上运行 Visual Studio 代码:未打开
- python - 如何在 Python 中显示 Google 人脸检测 Vision API 使用的图像
- python - 如何在 Python 中制作经过验证的符号?
- python - Python:枚举txt文件中的行,后跟逗号
- c++ - C ++:char数组在发送期间丢弃一些值
- wordpress - Wordpress elementor 阻止了具有来源的框架访问跨域框架
- css - 如何将 bootsrap 5 navbar li 元素向右移动
- javascript - 如何使用带有过滤器的字符串数组的 for 循环?
- c# - 你如何处理 git 中的临时 nuget 包更新
- tensorflow - 来自自定义函数的 IoU 得分与来自 Keras 指标的平均 IoU 不匹配