我有一个带有MediaPlayer
实例数组的管理器类,它是用于在我的应用程序上播放音频的管理器。到目前为止,它在后台运行良好,并在设备被阻止时继续播放音频。
现在,从Oreo设备开始,音频播放停止。有没有一种简单的方法可以强制设备使正在播放音频的MediaPlayer实例保持活动状态?我的意思是一种简单的方法,无需使用服务,也无需在设备的通知栏上创建自定义栏,这是我现在在堆栈溢出中找到的选项。可能必须是更简单的方法。
这是到目前为止我用来播放音频的代码:
MediaPlayer mPlayer = new MediaPlayer();
AssetFileDescriptor fileDescriptor = ApplicationContextProvider.getContext().getAssets().openFd(res.getUrl());
long start = fileDescriptor.getStartOffset();
long end = fileDescriptor.getLength();
mPlayer.setDataSource(fileDescriptor.getFileDescriptor(), start, end);
mPlayer.prepareAsync();
mPlayer.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
mPlayer.setLooping(loop);
fileDescriptor.close();
非常感谢您
答案 0 :(得分:0)
使用前台Serive。有关为何该服务将不再起作用的详细信息,请观看
https://www.youtube.com/watch?v=Pumf_4yjTMc
它明确表示将停止后台服务。有关Foreground Services的教程,请观看:
https://www.youtube.com/watch?v=FbpD5RZtbCc
请记住,您还需要学习启动Oreo的通知渠道。这个家伙也介绍了这一点。